home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 November / CHIP Kasım 1996.iso / ms / index / ppc / idxsveng.exe / RCDATA / CABINET / setupci.inf < prev    next >
INI File  |  1996-08-06  |  101KB  |  2,846 lines

  1. ;***********************************************************************
  2. ; IIS Content Index install script
  3. ;***********************************************************************
  4.  
  5. ;***********************************************************************
  6. ; SOURCE MEDIA DESCRIPTION
  7. ; ------------------------
  8. ;  This is only here because we must have _something_ in this slot...
  9. ;
  10. ;***********************************************************************
  11. [Source Media Descriptions]
  12.     1 = "Disk containing Microsoft Index Server files."
  13.  
  14. [RegistryConstants]
  15.     MaskAllAccess = 33554432
  16.     NoTitle       = 0
  17.     RegLastError  = $(!REG_ERROR_SUCCESS)
  18.     REG_VT_BINARY = 3   ;define this ourselves as it is not defd for us
  19.  
  20. ;************************************************************************
  21. ; CONFIGURATION CHOICES
  22. ; ---------------------
  23. ; the sections below contain the different choices supported for
  24. ; the configuration items shown.  an id section establishes the
  25. ; language independent IDs supported by nt setup.  for each language
  26. ; supported a text section displays the text used for the different
  27. ; choices
  28. ;************************************************************************
  29.  
  30. ;********************************
  31. ; PLATFORM INDEPENDENT CHOICES
  32. ;********************************
  33. ;----------------------------------------------------
  34. ; LANGUAGE CHOICES-- this is all you get,,,
  35. ;----------------------------------------------------
  36.  
  37. [LanguageID]
  38.     LANGID_ENG = ENG
  39.  
  40. ;----------------------------------------------------
  41. ; PROCESSOR CHOICES
  42. ;----------------------------------------------------
  43. [ProcessorID]
  44.     ProcessorID_I386  = I386
  45.     ProcessorID_I486  = I486
  46.     ProcessorID_I586  = I586
  47.     ProcessorID_R4000 = R4000
  48.     ProcessorID_Alpha = Alpha_AXP
  49.     ProcessorID_PPC601 = PPC601
  50.     ProcessorID_PPC603 = PPC603
  51.     ProcessorID_PPC604 = PPC604
  52.     ProcessorID_PPC620 = PPC620
  53.  
  54. ;----------------------------------------------------
  55. ; PLATFORM CHOICES
  56. ;----------------------------------------------------
  57. [PlatformID]
  58.     PlatformID_I386  = I386
  59.     PlatformID_Mips  = Mips
  60.     PlatformID_Alpha = Alpha
  61.     PlatformID_ppc   = ppc
  62.  
  63. ;**************************************************************
  64. ;  UI VARIABLES
  65. ;**************************************************************
  66.  
  67. [ProcessorVar]
  68.  
  69.     STF_PROCESSOR = "" ? $(LIBHANDLE) GetProcessor
  70.     STF_PLATFORM  = ""
  71.  
  72. [LocaleVar]
  73.  
  74. [LanguageVar]
  75.     ;
  76.     ; Language to Use For interaction with user
  77.     ;
  78.     STF_LANGUAGE       = "" ? $(LIBHANDLE) GetLanguage
  79.  
  80.  
  81. [UiVars]
  82.     ;
  83.     ; Computer name
  84.     ;
  85.  
  86.     STF_COMPUTERNAME = "" ? $(!LIBHANDLE) GetMyComputerName
  87.  
  88.     ;
  89.     ; Destination Particulars
  90.     ;
  91.  
  92.     WinSysDir = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
  93.  
  94.     ;
  95.     ; Source location
  96.     ;
  97.  
  98.     SrcDir = $(!STF_SRCDIR)
  99.     UsrRootPerms = "UNKNOWN"
  100.  
  101.     ;
  102.     ; Windows NT Directory
  103.     ;
  104.  
  105.     STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir
  106.     STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
  107.     STF_WINDOWSVERSION = "" ? $(!LIBHANDLE) GetWindowsNtVersion
  108.  
  109.     REG_VT_BINARY = 3   ;define this ourselves as it is not defd for us
  110.  
  111.     ;
  112.     ; Installation mode
  113.     ;
  114.  
  115.     STF_INSTALL_MODE    = "1"
  116.  
  117. [EnvironmentVars]
  118.     ;
  119.     ; user environment variables in the current user's profile
  120.     ; that we are concerned about
  121.  
  122.     PathEnvVar     = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) Path
  123.     InitEnvVar     = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) init
  124.  
  125. [VarsPlatformCommon]
  126.     ;
  127.     ; Installation options
  128.     ;
  129.  
  130.     ;
  131.     ; Options to disable
  132.     ;
  133.     DisableList = {}
  134.  
  135.  
  136. [VarsI386]
  137.     ;
  138.  
  139. [VarsMips]
  140.     ;
  141.  
  142. [VarsAlpha]
  143.     ;
  144.  
  145. [Varsppc]
  146.     ;
  147.  
  148. [StringsENG]
  149.     String1 = "Setup cannot install on the current processor."$(!LF)$(!LF)+
  150.               "Cannot proceed with install."
  151.  
  152.     String2 = "The Microsoft Index Server will not work with the "+
  153.               "IIS registry parameter CacheExtensions set to 0."
  154.  
  155.     String3 = "Microsoft Index Server files not found."$(!LF)+
  156.               "Please enter the directory path to the Microsoft Index Server setup files."
  157.  
  158.     String5 = "Path does not exist.  Please enter a path to an existing directory."
  159.  
  160.     String6 = "Error processing path entered.  Please reenter the path."
  161.  
  162.     String19 = "Microsoft Index Server requires prior installation of Microsoft Internet "+
  163.                "Information Server or Microsoft Peer Web Services."
  164.  
  165.     String20 = "Please enter the full physical path of the IIS scripts directory into which "+
  166.                "Microsoft Index Server sample scripts should be copied. Then choose Continue. "+
  167.                "If the directory does not exist it will be created.  A virtual root may "+
  168.                "also be added to map this directory."
  169.  
  170.     String21 = "Please enter the full physical path of the IIS virtual root into which "+
  171.                "Microsoft Index Server sample HTML pages should be copied. Then choose Continue. "+
  172.                "If the directory does not exist it will be created.  A virtual root may "+
  173.                "also be added to map this directory."
  174.  
  175.     String23 = "Please enter the full physical path to the directory in which the Microsoft "+
  176.                "Index Server index should be created. Then choose Continue."
  177.  
  178.     String24 = "Path cannot be created.  Please enter a valid path."
  179.  
  180.     String25 = "Please enter the full virtual path of the IIS scripts directory corresponding "+
  181.                "to the physical path you just entered. Then choose Continue."
  182.  
  183.     String26 = "Please enter the full virtual path of the IIS directory corresponding "+
  184.                "to the physical path you just entered. Then choose Continue."
  185.  
  186.     String27 = "Cannot set security on path.  Please enter a valid path."
  187.  
  188. ;--------------------
  189. ; BILLBOARD MESSAGES
  190. ;--------------------
  191.  
  192. [BillboardsENG]
  193.  
  194. Billboard1 = "Please wait while Setup creates directories on the destination drive."
  195. Billboard2 = "Please wait while Setup installs data into your registry."$(LF)$(LF)+
  196.              "Please be patient, this may take up to a couple of minutes."
  197. Billboard3 = "Please wait while Setup adds performance counters."
  198. Billboard4 = "Please wait while Setup stops Microsoft Internet Information Server."
  199. Billboard5 = "Please wait while Setup restarts Microsoft Internet Information Server."
  200. Billboard6 = "Please wait while Setup modifies paths in sample files."
  201.  
  202.  
  203. ;***************************************************************************
  204. ; DIALOGS
  205. ; -------
  206. ; the following sections contain the dialogs used to interact with the user.
  207. ; for each language supported there is a different dialog section.
  208. ;***************************************************************************
  209.  
  210.  
  211. ;-----------------------------------------------
  212. ; WELCOME DIALOG
  213. ;-----------------------------------------------
  214. [WelcomeDlgENG]
  215.     DlgType     = Info
  216.     DlgTemplate = WELCOME
  217.     Caption     = "Microsoft Index Server for Microsoft Windows NT Setup"
  218.  
  219.     DlgText     = "Welcome to Setup."$(LF)$(LF)+
  220.         "This Setup program installs Microsoft Index Server "+
  221.         "for Microsoft Windows NT. "$(LF)$(LF)+
  222.         "To install Microsoft Index Server on your computer now, click Continue "+
  223.         "or press Enter."$(LF)$(LF)+
  224.         "To exit Setup without installing, click Exit "+
  225.         "or press F3."
  226.  
  227.     Continue     = &Continue
  228.     Exit         = E&xit
  229.     Help         = &Help
  230.     HelpContext  = 98314
  231.  
  232. ;--------------------------------------------------------------
  233. ; SETUP DONE - RESTART DIALOG
  234. ;--------------------------------------------------------------
  235. [SetupDoneDlgENG]
  236.     DlgType     = "Info"
  237.     DlgTemplate = "RESTART"
  238.     Caption     = "Microsoft Index Server for Microsoft Windows NT Setup"
  239.     DlgText     = "The Microsoft Index Server is now installed. "+
  240.                   "A sample search page is located at:"$(LF)$(LF)+
  241.                   "        http://"$(STF_COMPUTERNAME)$(HomeVDir)"/Samples/Search/query.htm"$(LF)$(LF)
  242.     Windows     = "Exit to &Windows"
  243.  
  244. ;--------------------------------------------------------------
  245. ; SETUP NOT DONE - RESTART DIALOG
  246. ;--------------------------------------------------------------
  247. [SetupNotDoneDlgENG]
  248.     DlgType     = "Info"
  249.     DlgTemplate = "NONFATAL"
  250.     Caption     = "Microsoft Index Server for Microsoft Windows NT Setup"
  251.     DlgText     = "The Microsoft Index Server has not been installed."$(LF)$(LF)+
  252.                   "Please exit back to Windows NT."
  253.     Windows     = "Exit to &Windows"
  254.  
  255. ;--------------------------------------------------------------
  256. ; SETUP NOT DONE - Root Perms not found DIALOG
  257. ;--------------------------------------------------------------
  258. [RootPermsDlgENG]
  259.     DlgType      = "MessageBox"
  260.     STF_MB_TITLE = "Fatal error: Micosoft Index Server for Microsoft Windows NT Setup"
  261.     STF_MB_TEXT  = "You must be logged in as ADMINISTRATOR to "+
  262.                    "run this setup utility"
  263.     STF_MB_TYPE  = 1
  264.     STF_MB_ICON  = 3
  265.     STF_MB_DEF   = 1
  266.  
  267.  
  268. ;**************************************************************************
  269. ; DLL LOAD and FREE
  270. ; the following section contain commands to load specific dll libraries and
  271. ; to free them
  272. ;**************************************************************************
  273.  
  274. ;----------------------------------------------
  275. ; a) DETECT LIBRARY
  276. ;----------------------------------------------
  277. [LoadSetupLibrary]
  278.     LoadLibrary "x" $(STF_CWDDIR)setupdll.dll LIBHANDLE
  279.     exit
  280.  
  281. [FreeSetupLibrary]
  282.     FreeLibrary $(LIBHANDLE)
  283.     exit
  284.  
  285. [LoadCiSetupLibrary]
  286.     LoadLibrary "x" $(SrcPlatDir)cistp.dll CILIBHANDLE
  287.     exit
  288.  
  289. [FreeCiSetupLibrary]
  290.     FreeLibrary $(CILIBHANDLE)
  291.     exit
  292.  
  293. ;**************************************************************************
  294. ; PROGRESS GUAGE VARIABLES
  295. ;**************************************************************************
  296.  
  297. [ProgressCopyENG]
  298.     ProCaption   = "Microsoft Index Server for Microsoft Windows NT Setup"
  299.     ProCancel    = "Cance&l"
  300.     ProCancelMsg = "Microsoft Index Server is not correctly installed.  Are you sure "+
  301.                    "you want to cancel copying files?"
  302.     ProCancelCap = "Setup Message"
  303.     ProText1     = "Copying:"
  304.     ProText2     = "To:"
  305.  
  306.  
  307. ;**************************************************************************
  308. ; SHELL COMMANDS SCRIPT
  309. ;**************************************************************************
  310.  
  311. [Shell Commands]
  312.  
  313.     ;
  314.     ; Initialize the app, by setting the caption and loading the support library
  315.     ;
  316.     set TestCopy = 0
  317.     set TestReg  = 0    ;-sc
  318.     set TestRegVerbose = 0
  319.     set-title "Microsoft Index Server for Microsoft Windows NT Setup"
  320.     set Exit_Code = $(!SETUP_ERROR_GENERAL)
  321.     install   LoadSetupLibrary
  322.  
  323.     StartWait
  324.  
  325.     ;
  326.     ; read general constants
  327.     ;
  328.     set-subst LF = "\n"
  329.     set-subst MQ = \047   ;047=' in octal   meta-quote
  330.     set-subst DQ = \042   ;042=" in octal double-quote
  331.  
  332.     ;
  333.     ; read the platform independent choices
  334.     ;
  335.     read-syms LanguageID
  336.     read-syms ProcessorID
  337.     read-syms PlatformID
  338.  
  339.     ;
  340.     ; read the default language and try to detect the language
  341.     ;
  342.     read-syms LanguageVar
  343.     detect    LanguageVar
  344.  
  345.     ;
  346.     ; read and detect the processor we are working on
  347.     ;
  348.     read-syms ProcessorVar
  349.     detect    ProcessorVar
  350.     read-syms Strings$(!STF_LANGUAGE)
  351.     detect    Strings$(!STF_LANGUAGE)
  352.     read-syms Billboards$(!STF_LANGUAGE)
  353.  
  354.     ;
  355.     ; Check processor type, see if it is supported, if so what platform does it
  356.     ; belong to.
  357.     ;
  358.     ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I386)
  359.         set STF_PLATFORM = $(PlatformID_I386)
  360.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I486)
  361.         set STF_PLATFORM = $(PlatformID_I386)
  362.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I586)
  363.         set STF_PLATFORM = $(PlatformID_I386)
  364.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_R4000)
  365.         set STF_PLATFORM = $(PlatformID_Mips)
  366.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_Alpha)
  367.         set STF_PLATFORM = $(PlatformID_Alpha)
  368.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC601)
  369.         set STF_PLATFORM = $(PlatformID_ppc)
  370.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC603)
  371.         set STF_PLATFORM = $(PlatformID_ppc)
  372.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC604)
  373.         set STF_PLATFORM = $(PlatformID_ppc)
  374.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC620)
  375.         set STF_PLATFORM = $(PlatformID_ppc)
  376.     else
  377.         shell "" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String1)
  378.         ui pop 1
  379.         goto setupnotdone
  380.     endif
  381.  
  382.     read-syms  RegistryConstants
  383.  
  384.     ;
  385.     ; read the UI Variables and detect their setting on the current machine
  386.     ;
  387.     read-syms UiVars
  388.     detect    UiVars
  389.  
  390.     read-syms Vars$(STF_PLATFORM)
  391.     read-syms VarsPlatformCommon
  392.  
  393.     ;Makesure all our paths have '\' at the end
  394.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcDir)
  395.     ifstr(i) $(STATUS) != "ERROR"
  396.         set SrcDir = $(STATUS)
  397.     endif
  398.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(WinSysDir)
  399.     ifstr(i) $(STATUS) != "ERROR"
  400.         set WinSysDir = $(STATUS)
  401.     endif
  402.  
  403.     ;
  404.     ; Append processor architecture to source dir
  405.     ;
  406.     set SrcPlatDir = $(SrcDir)$(STF_PLATFORM)
  407.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcPlatDir)
  408.     ifstr(i) $(STATUS) != "ERROR"
  409.         set SrcPlatDir = $(STATUS)
  410.     endif
  411.  
  412.     ;
  413.     ; Call the library function to see if we have admin privileges
  414.     ;
  415.     LibraryProcedure STATUS, $(!LIBHANDLE), TestAdmin
  416.     ifstr(i) $(STATUS) == "YES"
  417.         set UsrRootPerms = "SYSTEM"
  418.     else
  419.         set UsrRootPerms = "LOSER"
  420.     endif
  421.  
  422.     ifstr(i) $(UsrRootPerms) != "SYSTEM"
  423.         read-syms RootPermsDlg$(STF_LANGUAGE)
  424.         ui start "RootPerms"
  425.         ifstr(i) $(DLGEVENT) == "OK"
  426.            ui pop 1
  427.            goto setupnotdone
  428.         else
  429.            goto setupnotdone
  430.         endif
  431.     endif
  432.  
  433.     EndWait
  434.  
  435.     ;
  436.     ; Try a couple locations for the help file. We'll do better later, after the welcome
  437.     ; screen, when we query the user for file locations.
  438.     ;
  439.  
  440.     set FileToCheck = $(SrcPlatDir)cistp.hlp
  441.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(FileToCheck)
  442.     ifstr(i) $(STATUS) != YES
  443.        set FileToCheck = $(SrcDir)cistp.hlp
  444.     endif
  445.  
  446.     SetHelpFile $(FileToCheck) 98314 98314
  447.  
  448.     set StartFolder = $(STF_WINDOWSPATH)"\Profiles\All Users\Start Menu\Programs\Microsoft Index Server (Common)"
  449.  
  450. welcome =+
  451.     set fW3SvcStopped = STATUS_FAILED
  452.  
  453.     read-syms WelcomeDlg$(STF_LANGUAGE)
  454.     ui start "WelcomeMe"
  455.  
  456.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  457.         ui pop 1
  458.         goto setsource
  459.     else-ifstr(i) $(DLGEVENT) == "EXIT"
  460.        shell "" QueryUserQuit
  461.        ifstr(i) $($R1) == "OK"
  462.           ui pop 1
  463.           goto setupnotdone
  464.        else
  465.           goto welcome
  466.        endif
  467.     else
  468.        goto end
  469.     endif
  470.  
  471. querysource =+
  472.     shell "" DoAskPathEx $(SrcDir) $(String3) $(String6)
  473.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  474.         goto setupnotdone
  475.     endif
  476.     ifstr(i) $($R0) == STATUS_SUCCESSFUL
  477.         set SrcDir = $($R1)
  478.         LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcDir)
  479.         ifstr(i) $(STATUS) != "ERROR"
  480.             set SrcDir = $(STATUS)
  481.         endif
  482.         set SrcPlatDir = $(SrcDir)$(STF_PLATFORM)
  483.         LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcPlatDir)
  484.         ifstr(i) $(STATUS) != "ERROR"
  485.             set SrcPlatDir = $(STATUS)
  486.         endif
  487.     else
  488.         goto setupnotdone
  489.     endif
  490.  
  491. setsource =+
  492.     ;
  493.     ; Check for proper location
  494.     ;
  495.     set FileToCheck = $(SrcPlatDir)query.dll
  496.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(FileToCheck)
  497.     ifstr(i) $(STATUS) == YES
  498.        goto loadcilib
  499.     else
  500.        ;
  501.        ; Try platform independent location
  502.        ;
  503.  
  504.        set FileToCheck = $(SrcDir)query.dll
  505.  
  506.        LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(FileToCheck)
  507.        ifstr(i) $(STATUS) == YES
  508.            set SrcPlatDir = $(SrcDir)
  509.            goto loadcilib
  510.        else
  511.            goto querysource
  512.        endif
  513.     endif
  514.  
  515. loadcilib =+
  516.  
  517.     install LoadCiSetupLibrary
  518.  
  519. setdestination =+
  520.     ;
  521.     ; Code should go here to set destination for sample .htm, .idq, and .htx files.
  522.     ;
  523.  
  524.     shell "" GetIISDirs
  525.  
  526.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  527.         shell "" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String19)
  528.         ui pop 1
  529.         goto setupnotdone
  530.     endif
  531.  
  532.     set ScriptDir = $($R1)
  533.     set HomeDir = $($R2)
  534.  
  535.     shell "" CheckIISUnloadISAPI
  536.  
  537.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  538.         shell "" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String2)
  539.         ui pop 1
  540.         goto setupnotdone
  541.     endif
  542.  
  543. setscript =+
  544.  
  545.     set DefScriptDir = $(ScriptDir)
  546.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(DefScriptDir)
  547.     ifstr(i) $(STATUS) != "ERROR"
  548.         set DefScriptDir = $(STATUS)
  549.     endif
  550.  
  551.     shell "" DoAskPathEx $(ScriptDir) $(String20) $(String6)
  552.     ifstr(i) $($R0) == STATUS_SUCCESSFUL
  553.         set ScriptDir = $($R1)
  554.     else
  555.         goto setupnotdone
  556.     endif
  557.  
  558.     LibraryProcedure IsFullPath $(!LIBHANDLE) CheckPathFullPathSpec $(ScriptDir)
  559.     ifstr(i) $(IsFullPath) == "No"
  560.       shell "" SetupMessage $(!STF_LANGUAGE) NONFATAL $(String5)
  561.       ui pop 1
  562.       goto setscript
  563.     endif
  564.  
  565.     shell "" DoMakeDir $(ScriptDir)Samples
  566.  
  567.     ;
  568.     ; Clean up from previous install (if any)
  569.     ;
  570.  
  571.     shell "" RemoveVRoot /Scripts/samples/search
  572.     shell "" RemoveVRoot /Scripts/srchadm
  573.  
  574.     ;
  575.     ; Did the user use a non-default script dir?
  576.     ;
  577.  
  578.     ifstr(i) $(ScriptDir) != $(DefScriptDir)
  579.         set ScriptVDir = "/Scripts"
  580.  
  581.         shell "" AddVRoot $(ScriptVDir)/samples/search $(ScriptDir)Samples\Search "4"
  582.         shell "" AddVRoot $(ScriptVDir)/srchadm $(ScriptDir)srchadm "4"
  583.  
  584.         ;shell "" DoAskVPathEx $(ScriptVDir) $(String25) $(String6)
  585.         ;ifstr(i) $($R0) == STATUS_SUCCESS
  586.         ;    set ScriptVDir = $($R1)
  587.         ;else
  588.         ;    goto setupnotdone
  589.         ;endif
  590.     endif
  591.  
  592.     ;
  593.     ; Set admin permissions on admin scripts
  594.     ;
  595.  
  596.     shell "" DoMakeDir $(ScriptDir)srchadm
  597.     LibraryProcedure RetVal $(!CILIBHANDLE) ApplySystemAcl $(ScriptDir)srchadm
  598.  
  599. sethome =+
  600.  
  601.     set DefHomeDir = $(HomeDir)
  602.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(DefHomeDir)
  603.     ifstr(i) $(STATUS) != "ERROR"
  604.         set DefHomeDir = $(STATUS)
  605.     endif
  606.  
  607.     shell "" DoAskPathEx $(HomeDir) $(String21) $(String6)
  608.     ifstr(i) $($R0) == STATUS_SUCCESSFUL
  609.         set HomeDir = $($R1)
  610.     else
  611.         goto setupnotdone
  612.     endif
  613.  
  614.     LibraryProcedure IsFullPath $(!LIBHANDLE) CheckPathFullPathSpec $(HomeDir)
  615.     ifstr(i) $(IsFullPath) == "No"
  616.       shell "" SetupMessage $(!STF_LANGUAGE) NONFATAL $(String5)
  617.       ui pop 1
  618.       goto sethome
  619.     endif
  620.  
  621.     ;Make sure all our paths have '\' at the end
  622.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(ScriptDir)
  623.     ifstr(i) $(STATUS) != "ERROR"
  624.         set ScriptDir = $(STATUS)
  625.     endif
  626.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(HomeDir)
  627.     ifstr(i) $(STATUS) != "ERROR"
  628.         set HomeDir = $(STATUS)
  629.     endif
  630.  
  631.     shell "" DoMakeDir $(HomeDir)Samples
  632.  
  633.     ;
  634.     ; Clean up from previous install (if any)
  635.     ;
  636.  
  637.     shell "" RemoveVRoot /samples/search
  638.     shell "" RemoveVRoot /srchadm
  639.     shell "" RemoveVRoot /SearchHelp
  640.  
  641.     ;
  642.     ; Did the user use a non-default home dir?
  643.     ;
  644.  
  645.     ifstr(i) $(HomeDir) != $(DefHomeDir)
  646.         set HomeVDir = "/"
  647.  
  648.         shell "" AddVRoot $(HomeVDir)samples/search $(HomeDir)Samples\Search "1"
  649.         ;shell "" DoAskVPathEx $(HomeVDir) $(String26) $(String6)
  650.         ;ifstr(i) $($R0) == STATUS_SUCCESS
  651.         ;    set HomeVDir = $($R1)
  652.         ;else
  653.         ;    goto setupnotdone
  654.         ;endif
  655.     endif
  656.  
  657.     ;
  658.     ; Setup root for admin.
  659.     ;
  660.  
  661.     shell "" DoMakeDir $(HomeDir)srchadm
  662.     LibraryProcedure RetVal $(!CILIBHANDLE) ApplySystemAcl $(HomeDir)srchadm
  663.     shell "" AddVRoot  /srchadm $(HomeDir)srchadm "1"
  664.  
  665. setcatalog =+
  666.  
  667.     shell "" GetCatalogDir
  668.     ifstr(i) $($R0) == STATUS_SUCCESSFUL
  669.         set DefCatalogDir = $($R1)
  670.     else
  671.         split-string $(HomeDir) ":" Tmp
  672.         set DefCatalogDir = *($(Tmp), 1):\
  673.     endif
  674.     ; Debug-Output "GetCatalogDir: DefCatalogDir = "$(DefCatalogDir)
  675.  
  676.     shell "" DoAskPathEx $(DefCatalogDir) $(String23) $(String6)
  677.     ifstr(i) $($R0) == STATUS_SUCCESSFUL
  678.         set CatalogDir = $($R1)
  679.  
  680.         ;Make sure all our paths have '\' at the end
  681.         LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(CatalogDir)
  682.         ifstr(i) $(STATUS) != "ERROR"
  683.             set CatalogDir = $(STATUS)
  684.         endif
  685.  
  686.         set CatalogDir2 = $(CatalogDir)Catalog.wci
  687.  
  688.         ;
  689.         ; Create catalog directory, then set an ACL on it.
  690.         ;
  691.  
  692.         LibraryProcedure RetVal $(!CILIBHANDLE) MkDir $(CatalogDir2)
  693.  
  694.         ifstr(i) $(RetVal) == "NO"
  695.             shell "" SetupMessage $(!STF_LANGUAGE) NONFATAL $(String24)
  696.             ui pop 1
  697.             goto setcatalog
  698.         endif
  699.  
  700.         LibraryProcedure RetVal $(!CILIBHANDLE) ApplySystemAcl $(CatalogDir2)
  701.  
  702.         ifstr(i) $(RetVal) == "NO"
  703.             shell "" SetupMessage $(!STF_LANGUAGE) NONFATAL $(String27)
  704.             ui pop 1
  705.             goto setcatalog
  706.         endif
  707.     else
  708.         goto setupnotdone
  709.     endif
  710.  
  711.     shell "" DoSetCatalog $(CatalogDir)
  712.  
  713. copystuff = +
  714.  
  715.     StartWait
  716.  
  717.     shell "" PushBillboard STATUSDLG $(Billboard4)
  718.     LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\net.exe stop w3svc
  719.     LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\net.exe stop msftpsvc
  720.     LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\net.exe stop gophersvc
  721.     set fW3SvcStopped = STATUS_SUCCESSFUL
  722.     shell "" PopBillboard
  723.  
  724.     shell "" PushBillboard STATUSDLG $(Billboard1)
  725.     install ICopySearchFiles
  726.     shell "" PopBillboard
  727.  
  728.     EndWait
  729.  
  730. finish = +
  731.     read-syms ProgressCopy$(STF_LANGUAGE)
  732.     install Install-All-Files-Now
  733.     ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_SUCCESS"
  734.         goto dosamples
  735.     else
  736.         shell "" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4)
  737.         ui pop 1
  738.         goto setupnotdone
  739.     endif
  740.  
  741. dosamples =+
  742.  
  743.     StartWait
  744.     shell "" PushBillboard STATUSDLG $(Billboard6)
  745.  
  746.     shell "" DoCatalogSection "Files-SampleIDQ" $(ScriptDir)Samples\Search\ $(CatalogDir)
  747.     shell "" DoCatalogSection "Files-AdminIDQ" $(ScriptDir)srchadm\ $(CatalogDir)
  748.  
  749.     shell "" DoURLSection "Files-URL" $(StartFolder)
  750.     
  751.     LibraryProcedure ReturnVal $(!CILIBHANDLE) RemoveHF $(HomeDir)Samples\Search\qrylang.htm
  752.     LibraryProcedure ReturnVal $(!CILIBHANDLE) Replace  $(HomeDir)Samples\Search\qrylang.htm "#TOP" "#QueryLanguage"
  753.  
  754.     ;ifstr(i) $(ScriptDir) != $(DefScriptDir)
  755.     ;    shell "" DoScriptSection "Files-SampleIDQ" $(ScriptDir)Samples\Search\ $(ScriptVDir)
  756.     ;    shell "" DoScriptSection "Files-AdminIDQ" $(ScriptDir)srchadm\ $(ScriptVDir)
  757.     ;    shell "" DoScriptSection "Files-SampleHTM" $(HomeDir)Samples\Search\ $($ScriptVDir)
  758.     ;    shell "" DoScriptSection "Files-AdminHTM" $(HomeDir)srchadm\ $($ScriptVDir)
  759.     ;endif
  760.  
  761.     ;ifstr(i) $(HomeDir) != $(DefHomeDir)
  762.     ;    shell "" DoHomeSection "Files-SampleHTM" $(HomeDir)Samples\Search\ $(HomeVDir)
  763.     ;    shell "" DoHomeSection "Files-AdminHTM" $(HomeDir)srchadm\ $(HomeVDir)
  764.     ;endif
  765.  
  766.     shell "" PopBillboard
  767.     EndWait
  768.  
  769. doregistry =+
  770.  
  771.     StartWait
  772.     shell "" PushBillboard STATUSDLG $(Billboard2)
  773.  
  774.     shell "" DoRegistrySection "CI.IIS"
  775.     shell "" DoRegistrySection "CI.ContentIndex"
  776.  
  777.     LibraryProcedure RetVal $(!CILIBHANDLE) IsALargeMachine
  778.  
  779.     ifstr(i) $(RetVal) == "1 NO"
  780.         shell "" DoRegistrySection "CI.ContentIndexSmall"
  781.     else-ifstr(i) $(RetVal) == "1 YES"
  782.         shell "" DoRegistrySection "CI.ContentIndexLarge"
  783.     else-ifstr(i) $(RetVal) == "2 NO"
  784.         shell "" DoRegistrySection "CI.ContentIndexSmallMP2"
  785.     else-ifstr(i) $(RetVal) == "2 YES"
  786.         shell "" DoRegistrySection "CI.ContentIndexLargeMP2"
  787.     else
  788.         shell "" DoRegistrySection "CI.ContentIndexLargeMPMany"
  789.     endif
  790.  
  791.     shell "" DoRegistrySection "CI.Performance"
  792.  
  793.     shell "" DoPersHandlerSection "CI.PersHandlers"
  794.  
  795.     shell "" DoRegistrySection "CI.HtmlFilter"
  796.  
  797.     shell "" DoInprocHandlerSection "CI.Filters"
  798.  
  799.     shell "" DoClassSection "CI.Classes"
  800.  
  801.     shell "" DoLanguageSection "CI.LangRes"
  802.     shell "" DoInprocHandlerSection "CI.LangClass"
  803.  
  804.     shell "" DoIDQLanguageSection "CI.LangIDQ"
  805.  
  806.     shell "" PopBillboard
  807.     EndWait
  808.  
  809. doperfctr =+
  810.  
  811.     StartWait
  812.     shell "" PushBillboard STATUSDLG $(Billboard3)
  813.  
  814.     LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\unlodctr.exe ContentIndex
  815.  
  816.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Perf\perfci.ini
  817.     ifstr(i) $(STATUS) == YES
  818.         LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\lodctr.exe $(SrcDir)Perf\perfci.ini
  819.     else
  820.         LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\lodctr.exe $(SrcDir)perfci.ini
  821.     endif
  822.  
  823.     LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\unlodctr.exe ContentFilter
  824.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Perf\perffilt.ini
  825.     ifstr(i) $(STATUS) == YES
  826.         LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\lodctr.exe $(SrcDir)Perf\perffilt.ini
  827.     else
  828.         LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\lodctr.exe $(SrcDir)perffilt.ini
  829.     endif
  830.  
  831.     LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\unlodctr.exe ISAPISearch
  832.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Perf\perfwci.ini
  833.     ifstr(i) $(STATUS) == YES
  834.         LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\lodctr.exe $(SrcDir)Perf\perfwci.ini
  835.     else
  836.         LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\lodctr.exe $(SrcDir)perfwci.ini
  837.     endif
  838.  
  839.     shell "" PopBillboard
  840.  
  841.     shell "" PushBillboard STATUSDLG $(Billboard5)
  842.  
  843.     LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\net.exe start w3svc
  844.     LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\net.exe start msftpsvc
  845.     LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\net.exe start gophersvc
  846.  
  847.     shell "" PopBillboard
  848.     EndWait
  849.  
  850. setupdone=+
  851.  
  852.     set Exit_Code = $(!SETUP_ERROR_SUCCESS)
  853.     read-syms SetupDoneDlg$(!STF_LANGUAGE)
  854.     ui start "DoneWithThis"
  855.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  856.       ui pop 1
  857.       goto end
  858.     else
  859.       goto end
  860.     endif
  861.  
  862. setupnotdone=+
  863.     ifstr(i) $(fW3SvcStopped) == STATUS_SUCCESSFUL
  864.         shell "" PushBillboard STATUSDLG $(Billboard5)
  865.         LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\net.exe start w3svc
  866.         shell "" PopBillboard
  867.     endif
  868.  
  869.     read-syms SetupNotDoneDlg$(!STF_LANGUAGE)
  870.     EndWait
  871.     ui start "NotDoneMakingAMess"
  872.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  873.       ui pop 1
  874.       goto end
  875.     else
  876.       goto end
  877.     endif
  878.  
  879. end = +
  880.     install   FreeSetupLibrary
  881.     install   FreeCiSetupLibrary
  882.     exit
  883.  
  884.  
  885.  
  886. ;*****************************************************************
  887. ;                                                                *
  888. ;         INSTALLATION SUPPORT ROUTINES                          *
  889. ;                                                                *
  890. ;*****************************************************************
  891.  
  892. ;**************************************************************************
  893. ;
  894. ;   DoSetCatalog
  895. ;
  896. ;   Creates catalog directory registry node.
  897. ;
  898. ;   $0  Catalog directory
  899. ;
  900. ;**************************************************************************
  901.  
  902. [DoSetCatalog]
  903.  
  904.     set Status = STATUS_FAILED
  905.  
  906.     set hKey = $(!REG_H_LOCAL)
  907.  
  908.     set OurKeyList = {}
  909.     set OurKeyList = >($(OurKeyList), {"system", $(!NoTitle), $(!MaskAllAccess)})
  910.     set OurKeyList = >($(OurKeyList), {"currentcontrolset", $(!NoTitle), $(!MaskAllAccess)})
  911.     set OurKeyList = >($(OurKeyList), {"control", $(!NoTitle), $(!MaskAllAccess)})
  912.     set OurKeyList = >($(OurKeyList), {"contentindex", $(!NoTitle), $(!MaskAllAccess)})
  913.  
  914.     ;build up Value List
  915.     set SlamValueList = {}
  916.     set SlamValueList = >($(SlamValueList), {"IsapiDefaultCatalogDirectory", $(!NoTitle), $(!REG_VT_SZ), $($0)})
  917.  
  918.     shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  919.  
  920.     CloseRegKey $($R1)
  921.  
  922.     set OurKeyList = >($(OurKeyList), {"IsapiVirtualServerCatalogs", $(!NoTitle), $(!MaskAllAccess)})
  923.  
  924.     ;build up Value List
  925.     set SlamValueList = {}
  926.     set SlamValueList = >($(SlamValueList), {"", $(!NoTitle), $(!REG_VT_SZ), $($0)})
  927.  
  928.     shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  929.  
  930.     set Status = $($R0)
  931.     CloseRegKey $($R1)
  932.  
  933.     return $(Status)
  934.  
  935. ;**************************************************************************
  936. ;
  937. ;   DoScriptSection
  938. ;
  939. ;   Modifies data in script files to point to script virtual root
  940. ;
  941. ;   $0  Section name to act upon
  942. ;   $1  Target directory into which files in $0 were copied
  943. ;   $2  Name of new script directory
  944. ;
  945. ;**************************************************************************
  946.  
  947. [DoScriptSection]
  948.     set Files = ^($($0), 2)
  949.  
  950.     ForListDo $(Files)
  951.         LibraryProcedure ReturnVal $(!CILIBHANDLE) Replace $($1)*($(Files), $(#)) /scripts $($2)
  952.     EndForListDo
  953.  
  954.     return
  955.  
  956. ;**************************************************************************
  957. ;
  958. ;   DoHomeSection
  959. ;
  960. ;   Modifies data in sample HTM files to point to script themselves.
  961. ;
  962. ;   $0  Section name to act upon
  963. ;   $1  Target directory into which files in $0 were copied
  964. ;   $2  Name of new script directory
  965. ;
  966. ;**************************************************************************
  967.  
  968. [DoHomeSection]
  969.     set Files = ^($($0), 2)
  970.     set-subst DQ = \042   ;042=" in octal double-quote
  971.  
  972.     set TheString = "NAME"+
  973.                     "="+
  974.                     $(DQ)+
  975.                     "HTMLQueryForm"+
  976.                     $(DQ)+
  977.                     " VALUE="+
  978.                     $(DQ)
  979.  
  980.     ForListDo $(Files)
  981.         LibraryProcedure ReturnVal $(!CILIBHANDLE) Replace $($1)*($(Files), $(#)) $(TheString)/samples $(TheString)$($2)/samples
  982.     EndForListDo
  983.  
  984.     return
  985.  
  986. ;**************************************************************************
  987. ;
  988. ;   DoCatalogSection
  989. ;
  990. ;   Modifies data in script files to point to catalog
  991. ;
  992. ;   $0  Section name to act upon
  993. ;   $1  Target directory into which files in $0 were copied
  994. ;   $2  Name of new script directory
  995. ;
  996. ;**************************************************************************
  997.  
  998. [DoCatalogSection]
  999.     set Files = ^($($0), 2)
  1000.  
  1001.     ForListDo $(Files)
  1002.         LibraryProcedure ReturnVal $(!CILIBHANDLE) Replace $($1)*($(Files), $(#)) d:\ $($2)
  1003.     EndForListDo
  1004.  
  1005.     return
  1006.  
  1007. ;**************************************************************************
  1008. ;
  1009. ;   DoURLSection
  1010. ;
  1011. ;   Modifies URLs to point to machine
  1012. ;
  1013. ;   $0  Section name to act upon
  1014. ;   $1  Target directory into which files in $0 were copied
  1015. ;
  1016. ;**************************************************************************
  1017.  
  1018. [DoURLSection]
  1019.     set Files = ^($($0), 4)
  1020.  
  1021.     ForListDo $(Files)
  1022.         split-string *($(Files), $(#)) "=" Tmp
  1023.         LibraryProcedure ReturnVal $(!CILIBHANDLE) Replace $($1)\*($(Tmp), 3) machname $(!STF_COMPUTERNAME)
  1024.     EndForListDo
  1025.  
  1026.     return
  1027.  
  1028. ;**************************************************************************
  1029. ;
  1030. ;   DoMakeDir
  1031. ;
  1032. ;   Build up directory path
  1033. ;
  1034. ;   $0  Path spec
  1035. ;
  1036. ;**************************************************************************
  1037.  
  1038. [DoMakeDir]
  1039.  
  1040.     set FullPath = ""
  1041.  
  1042.     split-string $($0) "\" Tmp
  1043.  
  1044.     ForListDo $(Tmp)
  1045.         set FullPath = $(FullPath)$($)
  1046.  
  1047.  
  1048.         ifstr(i) $($) != "\"
  1049.             LibraryProcedure RetVal $(!CILIBHANDLE) MkDir $(FullPath)
  1050.         endif
  1051.     EndForListDo
  1052.  
  1053.     return
  1054.  
  1055. ;**************************************************************************
  1056. ;
  1057. ;   DoRegistrySection
  1058. ;
  1059. ;   Adds keys listed in specified section
  1060. ;
  1061. ;   $0  Section name to act upon
  1062. ;
  1063. ;**************************************************************************
  1064.  
  1065. [DoRegistrySection]
  1066.     set hKeyList     = ^($($0), 1)
  1067.     set KeyTreeList  = ^($($0), 2)
  1068.     set ValNameList  = ^($($0), 3)
  1069.     set ValTypeList  = ^($($0), 4)
  1070.     set ValDataList  = ^($($0), 5)
  1071.  
  1072.     ; build up our parameters for CreateKey.
  1073.     ; $1 - key for root hive
  1074.     ; $2 - {keylist, $(NoTitle), $(AccessMask)}
  1075.     ; $3 - { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
  1076.     ;        {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
  1077.     ForListDo $(hKeyList)
  1078.         ifstr(i) *($(hKeyList), $(#)) == "hkcu"
  1079.             set hKey = $(!REG_H_CUSER)
  1080.         else-ifstr(i) *($(hKeyList), $(#)) == "hklm"
  1081.             set hKey = $(!REG_H_LOCAL)
  1082.         else-ifstr(i) *($(hKeyList), $(#)) == "hkcr"
  1083.             set hKey = $(!REG_H_CLASSES)
  1084.         endif
  1085.  
  1086.         ;build up our KeyList
  1087.         set OurKeyList = {}
  1088.         split-string *($(KeyTreeList), $(#)) "\" Tmp
  1089.         ForListDo $(Tmp)
  1090.             ifstr(i) $($) != "\"
  1091.                 set OurKeyList = >($(OurKeyList), {$($), $(!NoTitle), $(!MaskAllAccess)})
  1092.             endif
  1093.         EndForListDo
  1094.  
  1095.         ;build up Value List
  1096.         set SlamValueList = {}
  1097.         ifcontains *($(ValTypeList), $(#)) in {"0", "2"}
  1098.             set SlamValueList = >($(SlamValueList), {*($(ValNameList), $(#)), $(!NoTitle), $(!REG_VT_SZ), *($(ValDataList), $(#))})
  1099.         else-ifcontains *($(ValTypeList), $(#)) in {"5"}
  1100.             set SlamValueList = >($(SlamValueList), {*($(ValNameList), $(#)), $(!NoTitle), $(!REG_VT_EXPAND_SZ), *($(ValDataList), $(#))})
  1101.         else-ifcontains *($(ValTypeList), $(#)) in {"4"}
  1102.             set-hextodec Dec = *($(ValDataList), $(#))
  1103.             set SlamValueList = >($(SlamValueList), {*($(ValNameList), $(#)), $(!NoTitle), $(!REG_VT_DWORD), $(Dec)})
  1104.         else-ifcontains *($(ValTypeList), $(#)) in {"1", "3"}
  1105.             set Numbers = {}
  1106.             split-string *($(ValDataList), $(#)) "," Tmp
  1107.             ForListDo $(Tmp)
  1108.               ifstr $($) != ","
  1109.                 set-hextodec Dec = $($)
  1110.                 set Numbers = >($(Numbers), $(Dec))
  1111.               endif
  1112.             EndForListDo
  1113.             set SlamValueList = >($(SlamValueList), {*($(ValNameList), $(#)), $(!NoTitle), $(!REG_VT_BINARY), $(Numbers)})
  1114.         endif
  1115.  
  1116.         shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1117.         CloseRegKey $($R1)
  1118.  
  1119.     EndForListDo
  1120.  
  1121.     return
  1122.  
  1123. ;**************************************************************************
  1124. ;
  1125. ;   DoPersHandlerSection
  1126. ;
  1127. ;   Adds persistent handler specification(s)
  1128. ;
  1129. ;   $0  Section name to act upon
  1130. ;
  1131. ;**************************************************************************
  1132.  
  1133. [DoPersHandlerSection]
  1134.     set Clsid         = ^($($0), 1)
  1135.     set Desc          = ^($($0), 2)
  1136.     set InprocHandler = ^($($0), 3)
  1137.  
  1138.     ; build up our parameters for CreateKey.
  1139.     ; $1 - key for root hive
  1140.     ; $2 - {keylist, $(NoTitle), $(AccessMask)}
  1141.     ; $3 - { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
  1142.     ;        {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
  1143.  
  1144.     ForListDo $(Clsid)
  1145.         set hKey = $(!REG_H_CLASSES)
  1146.  
  1147.         ;build up our KeyList
  1148.         set OurKeyList = {}
  1149.         set OurKeyList = >($(OurKeyList), {"CLSID", $(!NoTitle), $(!MaskAllAccess)})
  1150.         set OurKeyList = >($(OurKeyList), {*($(Clsid), $(#)), $(!NoTitle), $(!MaskAllAccess)})
  1151.  
  1152.         ;build up Value List
  1153.         set SlamValueList = {}
  1154.         set SlamValueList = >($(SlamValueList), {"", $(!NoTitle), $(!REG_VT_SZ), *($(Desc), $(#))})
  1155.  
  1156.         shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1157.         CloseRegKey $($R1)
  1158.  
  1159.         ;build up our KeyList
  1160.         set OurKeyList = >($(OurKeyList), {"PersistentAddinsRegistered", $(!NoTitle), $(!MaskAllAccess)})
  1161.         set OurKeyList = >($(OurKeyList), {"{89BCB740-6119-101A-BCB7-00DD010655AF}", $(!NoTitle), $(!MaskAllAccess)})
  1162.  
  1163.         ;build up Value List
  1164.         set SlamValueList = {}
  1165.         set SlamValueList = >($(SlamValueList), {"", $(!NoTitle), $(!REG_VT_SZ), *($(InprocHandler), $(#))})
  1166.  
  1167.         shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1168.         CloseRegKey $($R1)
  1169.     EndForListDo
  1170.  
  1171.     return
  1172.  
  1173. ;**************************************************************************
  1174. ;
  1175. ;   DoInprocHandlerSection
  1176. ;
  1177. ;   Adds InprocHandler specification(s)
  1178. ;
  1179. ;   $0  Section name to act upon
  1180. ;
  1181. ;**************************************************************************
  1182.  
  1183. [DoInprocHandlerSection]
  1184.     set Clsid         = ^($($0), 1)
  1185.     set Desc          = ^($($0), 2)
  1186.     set InprocServer  = ^($($0), 3)
  1187.  
  1188.     ; build up our parameters for CreateKey.
  1189.     ; $1 - key for root hive
  1190.     ; $2 - {keylist, $(NoTitle), $(AccessMask)}
  1191.     ; $3 - { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
  1192.     ;        {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
  1193.  
  1194.     ForListDo $(Clsid)
  1195.         set hKey = $(!REG_H_CLASSES)
  1196.  
  1197.         ;build up our KeyList
  1198.         set OurKeyList = {}
  1199.         set OurKeyList = >($(OurKeyList), {"CLSID", $(!NoTitle), $(!MaskAllAccess)})
  1200.         set OurKeyList = >($(OurKeyList), {*($(Clsid), $(#)), $(!NoTitle), $(!MaskAllAccess)})
  1201.  
  1202.         ;build up Value List
  1203.         set SlamValueList = {}
  1204.         set SlamValueList = >($(SlamValueList), {"", $(!NoTitle), $(!REG_VT_SZ), *($(Desc), $(#))})
  1205.  
  1206.         shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1207.         CloseRegKey $($R1)
  1208.  
  1209.         ;build up our KeyList
  1210.         set OurKeyList = >($(OurKeyList), {"InprocServer32", $(!NoTitle), $(!MaskAllAccess)})
  1211.  
  1212.         ;build up Value List
  1213.         set SlamValueList = {}
  1214.         set SlamValueList = >($(SlamValueList), {"", $(!NoTitle), $(!REG_VT_SZ), *($(InprocServer), $(#))})
  1215.  
  1216.         shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1217.         CloseRegKey $($R1)
  1218.     EndForListDo
  1219.  
  1220.     return
  1221.  
  1222. ;**************************************************************************
  1223. ;
  1224. ;   DoLanguageSectionSection
  1225. ;
  1226. ;   Adds IFilter InprocHandler specification(s)
  1227. ;
  1228. ;   $0  Section name to act upon
  1229. ;
  1230. ;**************************************************************************
  1231.  
  1232. [DoLanguageSection]
  1233.     set Name          = ^($($0), 1)
  1234.     set Locale        = ^($($0), 2)
  1235.     set WBClsid       = ^($($0), 3)
  1236.     set StemClsid     = ^($($0), 4)
  1237.     set NoiseFile     = ^($($0), 5)
  1238.  
  1239.     ; build up our parameters for CreateKey.
  1240.     ; $1 - key for root hive
  1241.     ; $2 - {keylist, $(NoTitle), $(AccessMask)}
  1242.     ; $3 - { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
  1243.     ;        {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
  1244.  
  1245.     ForListDo $(Name)
  1246.         set hKey = $(!REG_H_LOCAL)
  1247.  
  1248.         ;
  1249.         ; Append name to language section.
  1250.         ;
  1251.  
  1252.         shell "" GetValue $(hKey) "system\currentcontrolset\control\ContentIndex\Language" "InstalledLangs"
  1253.  
  1254.         set Ok = STATUS_FAILED
  1255.  
  1256.         ifstr(i) $($R0) == STATUS_SUCCESSFUL
  1257.             set LangList = *($($R1),4)
  1258.  
  1259.             ;
  1260.             ; Check to see if the language already exists.
  1261.             ;
  1262.  
  1263.             set NewLang = *($(Name), $(#))
  1264.             set Ok = STATUS_SUCCESS
  1265.  
  1266.             ForListDo $(LangList)
  1267.                 ifstr(i) $($) == $(NewLang)
  1268.                     set Ok = STATUS_FAILED
  1269.                 endif
  1270.             EndForListDo
  1271.  
  1272.             ifstr(i) $(Ok) == STATUS_SUCCESS
  1273.                 set LangList = >($(LangList) *($(Name), $(#)))
  1274.             endif
  1275.         else
  1276.             set Ok = STATUS_SUCCESS
  1277.             set LangList = {}
  1278.             set LangList = >($(LangList) *($(Name), $(#)))
  1279.         endif
  1280.  
  1281.         ;build up our KeyList
  1282.         set OurKeyList = {}
  1283.         set OurKeyList = >($(OurKeyList), {"system", $(!NoTitle), $(!MaskAllAccess)})
  1284.         set OurKeyList = >($(OurKeyList), {"currentcontrolset", $(!NoTitle), $(!MaskAllAccess)})
  1285.         set OurKeyList = >($(OurKeyList), {"control", $(!NoTitle), $(!MaskAllAccess)})
  1286.         set OurKeyList = >($(OurKeyList), {"contentindex", $(!NoTitle), $(!MaskAllAccess)})
  1287.         set OurKeyList = >($(OurKeyList), {"language", $(!NoTitle), $(!MaskAllAccess)})
  1288.  
  1289.         ifstr(i) $(Ok) == STATUS_SUCCESS
  1290.             ;build up Value List
  1291.             set SlamValueList = {}
  1292.             set SlamValueList = >($(SlamValueList), {"InstalledLangs", $(!NoTitle), $(!REG_VT_MULTI_SZ), $(LangList)})
  1293.  
  1294.             shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1295.             CloseRegKey $($R1)
  1296.         endif
  1297.  
  1298.         ;
  1299.         ; Add parameters
  1300.         ;
  1301.  
  1302.         set OurKeyList = >($(OurKeyList), {*($(Name), $(#)), $(!NoTitle), $(!MaskAllAccess)})
  1303.  
  1304.         ;build up Value List
  1305.         set SlamValueList = {}
  1306.         set SlamValueList = >($(SlamValueList), {"Locale", $(!NoTitle), $(!REG_VT_DWORD), *($(Locale), $(#))})
  1307.         set SlamValueList = >($(SlamValueList), {"WBreakerClass", $(!NoTitle), $(!REG_VT_SZ), *($(WBClsid), $(#))})
  1308.         set SlamValueList = >($(SlamValueList), {"StemmerClass", $(!NoTitle), $(!REG_VT_SZ), *($(StemClsid), $(#))})
  1309.         set SlamValueList = >($(SlamValueList), {"NoiseFile", $(!NoTitle), $(!REG_VT_SZ), *($(NoiseFile), $(#))})
  1310.  
  1311.         shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1312.         CloseRegKey $($R1)
  1313.     EndForListDo
  1314.  
  1315.     return
  1316.  
  1317. ;**************************************************************************
  1318. ;
  1319. ;   DoIDQLanguageSection
  1320. ;
  1321. ;   Adds error template names to language keys
  1322. ;
  1323. ;   $0  Section name to act upon
  1324. ;
  1325. ;**************************************************************************
  1326.  
  1327. [DoIDQLanguageSection]
  1328.     set Name      = ^($($0), 1)
  1329.     set IDQError  = ^($($0), 2)
  1330.     set HTXError  = ^($($0), 3)
  1331.     set RestError = ^($($0), 4)
  1332.     set DefError  = ^($($0), 5)
  1333.  
  1334.     ; build up our parameters for CreateKey.
  1335.     ; $1 - key for root hive
  1336.     ; $2 - {keylist, $(NoTitle), $(AccessMask)}
  1337.     ; $3 - { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
  1338.     ;        {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
  1339.  
  1340.     ForListDo $(Name)
  1341.         set hKey = $(!REG_H_LOCAL)
  1342.  
  1343.         ;
  1344.         ; Append name to language section.
  1345.         ;
  1346.  
  1347.         ;build up our KeyList
  1348.         set OurKeyList = {}
  1349.         set OurKeyList = >($(OurKeyList), {"system", $(!NoTitle), $(!MaskAllAccess)})
  1350.         set OurKeyList = >($(OurKeyList), {"currentcontrolset", $(!NoTitle), $(!MaskAllAccess)})
  1351.         set OurKeyList = >($(OurKeyList), {"control", $(!NoTitle), $(!MaskAllAccess)})
  1352.         set OurKeyList = >($(OurKeyList), {"contentindex", $(!NoTitle), $(!MaskAllAccess)})
  1353.         set OurKeyList = >($(OurKeyList), {"language", $(!NoTitle), $(!MaskAllAccess)})
  1354.         set OurKeyList = >($(OurKeyList), {*($(Name), $(#)), $(!NoTitle), $(!MaskAllAccess)})
  1355.  
  1356.         ;build up Value List
  1357.         set SlamValueList = {}
  1358.         set SlamValueList = >($(SlamValueList), {"ISAPIIDQErrorFile", $(!NoTitle), $(!REG_VT_SZ), *($(IDQError), $(#))})
  1359.         set SlamValueList = >($(SlamValueList), {"ISAPIHTXErrorFile", $(!NoTitle), $(!REG_VT_SZ), *($(HTXError), $(#))})
  1360.         set SlamValueList = >($(SlamValueList), {"ISAPIRestrictionErrorFile", $(!NoTitle), $(!REG_VT_SZ), *($(RestError), $(#))})
  1361.         set SlamValueList = >($(SlamValueList), {"ISAPIDefaultErrorFile", $(!NoTitle), $(!REG_VT_SZ), *($(DefError), $(#))})
  1362.  
  1363.         shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1364.         CloseRegKey $($R1)
  1365.     EndForListDo
  1366.  
  1367.     return
  1368.  
  1369. ;**************************************************************************
  1370. ;
  1371. ;   DoClassSection
  1372. ;
  1373. ;   Adds/modifies class specification(s)
  1374. ;
  1375. ;   $0  Section name to act upon
  1376. ;
  1377. ;**************************************************************************
  1378.  
  1379. [DoClassSection]
  1380.     set ShortName     = ^($($0), 1)
  1381.     set Clsid         = ^($($0), 2)
  1382.     set Desc          = ^($($0), 3)
  1383.     set PersHandler   = ^($($0), 4)
  1384.     set Exts          = ^($($0), 5)
  1385.  
  1386.     ; build up our parameters for CreateKey.
  1387.     ; $1 - key for root hive
  1388.     ; $2 - {keylist, $(NoTitle), $(AccessMask)}
  1389.     ; $3 - { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
  1390.     ;        {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
  1391.  
  1392.     ForListDo $(ShortName)
  1393.         set hKey = $(!REG_H_CLASSES)
  1394.  
  1395.         set DefShortName   = *($(ShortName), $(#))
  1396.         set DefClsid       = *($(Clsid), $(#))
  1397.         set DefDesc        = *($(Desc), $(#))
  1398.         set DefPersHandler = *($(PersHandler), $(#))
  1399.  
  1400.         split-string *($(Exts), $(#)) "," Tmp
  1401.  
  1402.         ForListDo $(Tmp)
  1403.             ifstr(i) $($) != ","
  1404.                 set DefExt = $($)
  1405.  
  1406.                 ;
  1407.                 ; Does the extension to short name already exist?
  1408.                 ;
  1409.  
  1410.                 shell "" GetValue $(hKey) $(DefExt) ""
  1411.  
  1412.                 ifstr(i) $($R0) == STATUS_SUCCESSFUL
  1413.                     set OurShortName = *($($R1),4)
  1414.                     ; shell "" SetupMessage $(!STF_LANGUAGE) NONFATAL "Short name "$(OurShortName)
  1415.                 else
  1416.                     set OurShortName = $(DefShortName)
  1417.  
  1418.                     set OurKeyList = {}
  1419.                     set OurKeyList = >($(OurKeyList), {$(DefExt), $(!NoTitle), $(!MaskAllAccess)})
  1420.  
  1421.                     set SlamValueList = {}
  1422.                     set SlamValueList = >($(SlamValueList), {"", $(!NoTitle), $(!REG_VT_SZ), $(DefShortName)})
  1423.  
  1424.                     shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1425.                     CloseRegKey $($R1)
  1426.  
  1427.                     ;
  1428.                     ; Does the short name already exist?
  1429.                     ;
  1430.  
  1431.                     shell "" GetValue $(hKey) $(DefShortName) ""
  1432.  
  1433.                     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1434.                         set OurKeyList = {}
  1435.                         set OurKeyList = >($(OurKeyList), {$(DefShortName), $(!NoTitle), $(!MaskAllAccess)})
  1436.  
  1437.                         set SlamValueList = {}
  1438.                         set SlamValueList = >($(SlamValueList), {"", $(!NoTitle), $(!REG_VT_SZ), $(DefDesc)})
  1439.  
  1440.                         shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1441.                         CloseRegKey $($R1)
  1442.                     endif
  1443.                 endif
  1444.  
  1445.                 ;
  1446.                 ; Does the CLSID already exist?  If so, we need to use it.
  1447.                 ;
  1448.  
  1449.                 set Key = $(OurShortName)\CLSID
  1450.                 shell "" GetValue $(hKey) $(Key) ""
  1451.  
  1452.                 ifstr(i) $($R0) == STATUS_SUCCESSFUL
  1453.                     set OurClsid = *($($R1),4)
  1454.                     ; shell "" SetupMessage $(!STF_LANGUAGE) NONFATAL "ClassId "$(OurClsid)
  1455.                 else
  1456.                     set OurClsid = $(DefClsid)
  1457.  
  1458.                     set OurKeyList = {}
  1459.                     set OurKeyList = >($(OurKeyList), {$(OurShortName), $(!NoTitle), $(!MaskAllAccess)})
  1460.                     set OurKeyList = >($(OurKeyList), {"CLSID", $(!NoTitle), $(!MaskAllAccess)})
  1461.  
  1462.                     set SlamValueList = {}
  1463.                     set SlamValueList = >($(SlamValueList), {"", $(!NoTitle), $(!REG_VT_SZ), $(DefClsid)})
  1464.  
  1465.                     shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1466.                     CloseRegKey $($R1)
  1467.  
  1468.                     set OurKeyList = {}
  1469.                     set OurKeyList = >($(OurKeyList), {"CLSID", $(!NoTitle), $(!MaskAllAccess)})
  1470.                     set OurKeyList = >($(OurKeyList), {$(DefClsid), $(!NoTitle), $(!MaskAllAccess)})
  1471.  
  1472.                     set SlamValueList = {}
  1473.                     set SlamValueList = >($(SlamValueList), {"", $(!NoTitle), $(!REG_VT_SZ), $(DefDesc)})
  1474.  
  1475.                     shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1476.                     CloseRegKey $($R1)
  1477.                 endif
  1478.  
  1479.                 ;
  1480.                 ; We may already have added the persistent handler.
  1481.                 ;
  1482.  
  1483.                 set Key = CLSID\$(OurClsid)\PersistentHandler
  1484.                 shell "" GetValue $(hKey) $(Key) ""
  1485.  
  1486.                 ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1487.                     ;
  1488.                     ; Add persistent handler
  1489.                     ;
  1490.  
  1491.                     set OurKeyList = {}
  1492.                     set OurKeyList = >($(OurKeyList), {"CLSID", $(!NoTitle), $(!MaskAllAccess)})
  1493.                     set OurKeyList = >($(OurKeyList), {$(OurClsid), $(!NoTitle), $(!MaskAllAccess)})
  1494.                     set OurKeyList = >($(OurKeyList), {"PersistentHandler", $(!NoTitle), $(!MaskAllAccess)})
  1495.  
  1496.                     set SlamValueList = {}
  1497.                     set SlamValueList = >($(SlamValueList), {"", $(!NoTitle), $(!REG_VT_SZ), $(DefPersHandler)})
  1498.  
  1499.                     shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1500.                     CloseRegKey $($R1)
  1501.                     endif
  1502.                 endif
  1503.  
  1504.                 ;
  1505.                 ; Add a persistent handler to IE 3.0 CLSID, to account for the case where
  1506.                 ; IE 3.0 is installed after Index Server, and IE 3.0 overwrites OurShortName\CLSID
  1507.                 ;
  1508.  
  1509.                 set isIEKey = "FALSE"
  1510.                 ifstr(i) $(DefShortName) == "htmlfile"
  1511.                    ; Debug-Output "DefShortName is htmlfile"
  1512.                    set isIEKey = "TRUE"
  1513.                 endif
  1514.  
  1515.                 ifstr(i) $(isIEKey) != "FALSE"
  1516.                     ifstr(i) $(OurClsid) != $(DefClsid)
  1517.                         ; Debug-Output "Setting up DefClsid\PersistentHandler for IE 3.0"
  1518.                         set Key = CLSID\$(DefClsid)\PersistentHandler
  1519.                         shell "" GetValue $(hKey) $(Key) ""
  1520.  
  1521.                         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1522.  
  1523.                             set OurKeyList = {}
  1524.                             set OurKeyList = >($(OurKeyList), {"CLSID", $(!NoTitle), $(!MaskAllAccess)})
  1525.                             set OurKeyList = >($(OurKeyList), {$(DefClsid), $(!NoTitle), $(!MaskAllAccess)})
  1526.                             set OurKeyList = >($(OurKeyList), {"PersistentHandler", $(!NoTitle), $(!MaskAllAccess)})
  1527.  
  1528.                             set SlamValueList = {}
  1529.                             set SlamValueList = >($(SlamValueList), {"", $(!NoTitle), $(!REG_VT_SZ), $(DefPersHandler)})
  1530.  
  1531.                             shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1532.                             CloseRegKey $($R1)
  1533.                         endif
  1534.                     endif
  1535.                 endif
  1536.             endif
  1537.         EndForListDo
  1538.     EndForListDo
  1539.  
  1540.     return
  1541.  
  1542. ;**************************************************************************
  1543. ;
  1544. ;   RemoveVRoot
  1545. ;
  1546. ;   Remove virtual root
  1547. ;
  1548. ;   $0 : virtual root to remove
  1549. ;
  1550. ;**************************************************************************
  1551.  
  1552. [RemoveVRoot]
  1553.  
  1554.     set Status     = STATUS_FAILED
  1555.     set UserAction = CANCEL
  1556.  
  1557.     set hKey = $(!REG_H_LOCAL)
  1558.  
  1559.     ;build up our KeyList
  1560.     set OurKeyList = {}
  1561.     set OurKeyList = >($(OurKeyList), {"system", $(!NoTitle), $(!MaskAllAccess)})
  1562.     set OurKeyList = >($(OurKeyList), {"currentcontrolset", $(!NoTitle), $(!MaskAllAccess)})
  1563.     set OurKeyList = >($(OurKeyList), {"services", $(!NoTitle), $(!MaskAllAccess)})
  1564.     set OurKeyList = >($(OurKeyList), {"w3svc", $(!NoTitle), $(!MaskAllAccess)})
  1565.     set OurKeyList = >($(OurKeyList), {"parameters", $(!NoTitle), $(!MaskAllAccess)})
  1566.     set OurKeyList = >($(OurKeyList), {"virtual roots", $(!NoTitle), $(!MaskAllAccess)})
  1567.  
  1568.  
  1569.     shell "" DeleteValue $(hKey) $(OurKeyList) $($0)
  1570.     CloseRegKey $($R1)
  1571.  
  1572.     shell "" DeleteValue $(hKey) $(OurKeyList) $($0)","
  1573.     CloseRegKey $($R1)
  1574.  
  1575.     return
  1576.  
  1577. ;**************************************************************************
  1578. ;
  1579. ;   AddVRoot
  1580. ;
  1581. ;   Add virtual root
  1582. ;
  1583. ;   $0 : virtual root to add
  1584. ;   $1 : physical path
  1585. ;   $2 : Type: 1 = read, 4 = execute
  1586. ;
  1587. ;**************************************************************************
  1588.  
  1589. [AddVRoot]
  1590.  
  1591.     set Status     = STATUS_FAILED
  1592.     set UserAction = CANCEL
  1593.  
  1594.     set hKey = $(!REG_H_LOCAL)
  1595.  
  1596.     ;build up our KeyList
  1597.     set OurKeyList = {}
  1598.     set OurKeyList = >($(OurKeyList), {"system", $(!NoTitle), $(!MaskAllAccess)})
  1599.     set OurKeyList = >($(OurKeyList), {"currentcontrolset", $(!NoTitle), $(!MaskAllAccess)})
  1600.     set OurKeyList = >($(OurKeyList), {"services", $(!NoTitle), $(!MaskAllAccess)})
  1601.     set OurKeyList = >($(OurKeyList), {"w3svc", $(!NoTitle), $(!MaskAllAccess)})
  1602.     set OurKeyList = >($(OurKeyList), {"parameters", $(!NoTitle), $(!MaskAllAccess)})
  1603.     set OurKeyList = >($(OurKeyList), {"virtual roots", $(!NoTitle), $(!MaskAllAccess)})
  1604.  
  1605.     ;build up Value List
  1606.     set SlamValueList = {}
  1607.     set SlamValueList = >($(SlamValueList), {$($0), $(!NoTitle), $(!REG_VT_SZ), $($1)",,"$($2)})
  1608.  
  1609.     shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  1610.     CloseRegKey $($R1)
  1611.  
  1612.     return
  1613.  
  1614. ;**************************************************************************
  1615. ;
  1616. ;   GetIISDirs
  1617. ;
  1618. ;   Attempts to locate Script and Home directories for IIS
  1619. ;
  1620. ;   Returns: $R0: Status: STATUS_SUCCESSFUL
  1621. ;                         STATUS_FAILED
  1622. ;
  1623. ;            $R1: Script directory
  1624. ;
  1625. ;            $R2: Home directory
  1626. ;
  1627. ;**************************************************************************
  1628.  
  1629. [GetIISDirs]
  1630.     set Script = ""
  1631.     set Home = ""
  1632.  
  1633.     ;
  1634.     ; First, check for service
  1635.     ;
  1636.  
  1637.     set hKey = $(!REG_H_LOCAL)
  1638.     shell "" GetValue $(hKey) "system\currentcontrolset\services\w3svc" "Start"
  1639.  
  1640.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1641.         goto FailIIS
  1642.     endif
  1643.  
  1644.     shell "" GetValue $(hKey) "system\currentcontrolset\services\w3svc\parameters\virtual roots" "/Scripts"
  1645.     ifstr(i) $($R0) == STATUS_SUCCESSFUL
  1646.         split-string *($($R1),4) "," Tmp
  1647.         set Script = *($(Tmp),1)
  1648.     endif
  1649.  
  1650.     shell "" GetValue $(hKey) "system\currentcontrolset\services\w3svc\parameters\virtual roots" "/Scripts,"
  1651.     ifstr(i) $($R0) == STATUS_SUCCESSFUL
  1652.         split-string *($($R1),4) "," Tmp
  1653.         set Script = *($(Tmp),1)
  1654.     endif
  1655.  
  1656.     shell "" GetValue $(hKey) "system\currentcontrolset\services\w3svc\parameters\virtual roots" "/"
  1657.     ifstr(i) $($R0) == STATUS_SUCCESSFUL
  1658.         split-string *($($R1),4) "," Tmp
  1659.         set Home = *($(Tmp),1)
  1660.     endif
  1661.  
  1662.     shell "" GetValue $(hKey) "system\currentcontrolset\services\w3svc\parameters\virtual roots" "/,"
  1663.     ifstr(i) $($R0) == STATUS_SUCCESSFUL
  1664.         split-string *($($R1),4) "," Tmp
  1665.         set Home = *($(Tmp),1)
  1666.     endif
  1667.  
  1668.     set Status = STATUS_SUCCESSFUL
  1669.     goto DoneIIS
  1670.  
  1671. FailIIS =+
  1672.     set Status = STATUS_FAILED
  1673.  
  1674. DoneIIS =+
  1675.  
  1676.     return $(Status) $(Script) $(Home)
  1677.  
  1678. ;**************************************************************************
  1679. ;
  1680. ;   CheckIISUnloadISAPI
  1681. ;
  1682. ;   Check to see if ISAPI dlls are unloaded after every call.
  1683. ;
  1684. ;   Returns: $R0: Status: STATUS_SUCCESSFUL
  1685. ;                         STATUS_FAILED
  1686. ;
  1687. ;**************************************************************************
  1688.  
  1689. [CheckIISUnloadISAPI]
  1690.     ;
  1691.     ; First, check for service
  1692.     ;
  1693.  
  1694.     set hKey = $(!REG_H_LOCAL)
  1695.     shell "" GetValue $(hKey) "system\currentcontrolset\services\w3svc\parameters" "CacheExtensions"
  1696.  
  1697.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1698.         goto FailCheckIIS
  1699.     endif
  1700.  
  1701.     ifstr(i) *($($R1),4) != "1"
  1702.         goto FailCheckIIS
  1703.     endif
  1704.  
  1705.     set Status = STATUS_SUCCESSFUL
  1706.     goto DoneCheckIIS
  1707.  
  1708. FailCheckIIS =+
  1709.     set Status = STATUS_FAILED
  1710.  
  1711. DoneCheckIIS =+
  1712.  
  1713.     return $(Status) $(R1)
  1714.  
  1715.  
  1716. ;**************************************************************************
  1717. ;
  1718. ;   GetCatalogDir
  1719. ;
  1720. ;   Attempts to locate previously installed catalog directory for Index Server
  1721. ;
  1722. ;   Returns: $R0: Status: STATUS_SUCCESSFUL
  1723. ;                         STATUS_FAILED
  1724. ;
  1725. ;            $R1: Catalog directory
  1726. ;
  1727. ;**************************************************************************
  1728.  
  1729. [GetCatalogDir]
  1730.     set CatalogDir = ""
  1731.  
  1732.     ;
  1733.     ; First, check for service
  1734.     ;
  1735.  
  1736.     set hKey = $(!REG_H_LOCAL)
  1737.     shell "" GetValue $(hKey) "system\currentcontrolset\control\ContentIndex" "ISAPIDefaultCatalogDirectory"
  1738.  
  1739.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1740.         goto FailGetCatalog
  1741.     endif
  1742.  
  1743.     set Tmp = *($($R1),4)
  1744.     ifstr(i) $(Tmp) == ""
  1745.         goto FailGetCatalog
  1746.     endif
  1747.  
  1748.     set Status = STATUS_SUCCESSFUL
  1749.     goto DoneGetCatalog
  1750.  
  1751. FailGetCatalog =+
  1752.     set Status = STATUS_FAILED
  1753.  
  1754. DoneGetCatalog =+
  1755.  
  1756.     return $(Status) $(Tmp)
  1757.  
  1758.  
  1759. ;**************************************************************************
  1760. ;
  1761. ;   DoesPerfExist
  1762. ;
  1763. ;   Attempts to determine whether performance counters have already
  1764. ;   been installed.
  1765. ;
  1766. ;   Input:   $0:  One of ContentIndex, ContentFilter, ISAPISearch
  1767. ;
  1768. ;   Returns: $R0: Status: STATUS_SUCCESSFUL --> Perf counters exist
  1769. ;                         STATUS_FAILED     --> No perf counters
  1770. ;
  1771. ;**************************************************************************
  1772.  
  1773. [DoesPerfExist]
  1774.     ;
  1775.     ; Check for key added by lodctr
  1776.     ;
  1777.  
  1778.     set hKey = $(!REG_H_LOCAL)
  1779.     set Key = "system\currentcontrolset\services\"$($0)"\Performance"
  1780.     shell "" GetValue $(hKey) $(Key) "First Counter"
  1781.  
  1782.     return $($R0)
  1783.  
  1784. ;**************************************************************************
  1785. ;
  1786. ;   GetValue
  1787. ;
  1788. ;   Checks if key is present, and if so, returns the value
  1789. ;
  1790. ;   $0  Key Handle
  1791. ;   $1  Key name
  1792. ;   $2  Value Name
  1793. ;
  1794. ;**************************************************************************
  1795.  
  1796. [GetValue]
  1797.     set Status = STATUS_FAILED
  1798.     read-syms RegistryConstants
  1799.  
  1800.     OpenRegKey $($0) "" $($1) $(!REG_KEY_READ) TempKey
  1801.  
  1802.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1803.         ;   Debug-Output "REGISTRY.INF: OpenRegKey Failed: "$($)" "$($0)" "$($1)" "$($2)
  1804.         goto end_get_value
  1805.     endif
  1806.  
  1807.     GetRegValue $(TempKey), $($2), KeyValue
  1808.  
  1809.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1810.         ;   Debug-Output "REGISTRY.INF: GetRegValue Failed:"$($)
  1811.         CloseRegKey $(TempKey)
  1812.         goto end_get_value
  1813.     endif
  1814.  
  1815.     set Status = STATUS_SUCCESSFUL
  1816.  
  1817. end_get_value = +
  1818.     return $(Status) $(KeyValue)
  1819.  
  1820. ;-----------------------------------------------------------------------
  1821. ; ROUTINE:      CreateKey
  1822. ;
  1823. ; DESCRIPTION:  Creates a key and fixes the values indicated.
  1824. ;               Key is Handle\Key1\Key2\...\Keyn. Value list
  1825. ;               is for Valuen.
  1826. ;
  1827. ; INPUTS:       $0: Handle into registry
  1828. ;               $1: KeyTreeComponents {Key1Info, Key2Info..}
  1829. ;               $2: ValueList {Value1Info, Value2Info, Value3Info}
  1830. ;
  1831. ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
  1832. ;                            STATUS_FAILED
  1833. ;                            STATUS_ERROR_CREATEKEY
  1834. ;                            STATUS_ERROR_CREATEVALUE
  1835. ;
  1836. ;               $R1: Handle to created key
  1837. ;
  1838. ;------------------------------------------------------------------------
  1839.  
  1840. [CreateKey]
  1841. ;    ifint $(!TestRegVerbose) == 1
  1842. ;       Debug-Output ".INF: CreateKey $0 = "$($0)
  1843. ;       Debug-Output ".INF: CreateKey $1 = "$($1)
  1844. ;       Debug-Output ".INF: CreateKey $2 = "$($2)
  1845. ;    endif
  1846.  
  1847.     ;
  1848.     ; Initialize
  1849.     ;
  1850.  
  1851.     set Status = STATUS_FAILED
  1852.     read-syms RegistryConstants
  1853.  
  1854.     ;
  1855.     ; traverse down the keytreecomponents and open/create components as
  1856.     ; you go along
  1857.     ;
  1858.  
  1859.     set BaseHandle = $($0)
  1860.     set KeyHandle  = $(BaseHandle)
  1861.  
  1862.     ForListDo $($1)
  1863.  
  1864.         set KeyInfo = $($)
  1865.         set KeyName = *($(KeyInfo), 1)
  1866.  
  1867.         ;
  1868.         ; Try opening the key first
  1869.         OpenRegKey $(BaseHandle) "" $(KeyName) $(MaskAllAccess) KeyHandle
  1870.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1871.             ;
  1872.             ; Key doesn't exist
  1873.             ;
  1874.             ; Debug-Output "REGISTRY.INF: Key"$(KeyName)"doesn't exist.  Will create key"
  1875.  
  1876.             set RegLastError = 0
  1877.             CreateRegKey $(BaseHandle) $(KeyInfo) "" $(MaskAllAccess) "" KeyHandle
  1878.             ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1879.                 set Status = STATUS_ERROR_CREATEKEY
  1880.                 ;   Debug-Output "REGISTRY.INF: Error in creating key"
  1881.                 goto endcreate
  1882.             endif
  1883.         endif
  1884.  
  1885.         ifstr(i) $(BaseHandle) != $($0)
  1886.             CloseRegKey $(BaseHandle)
  1887.             ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1888.                 set Status = STATUS_ERROR_CREATEKEY
  1889.                 ;  Debug-Output "REGISTRY.INF: Error in closing base handle"
  1890.                 goto endcreate
  1891.             endif
  1892.         endif
  1893.  
  1894.         set BaseHandle = $(KeyHandle)
  1895.  
  1896.     EndForListDo
  1897.  
  1898.     ifstr(i) $($2) != {}
  1899.         shell "" AddValueList $(KeyHandle) $($2)
  1900.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1901.             set Status = STATUS_ERROR_CREATEVALUE
  1902.             goto endcreate
  1903.         endif
  1904.     endif
  1905.     set Status = STATUS_SUCCESSFUL
  1906.  
  1907. endcreate = +
  1908.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1909.         ; Debug-Output "REGISTRY.INF: CreateKey Error:"$(Status)
  1910.     endif
  1911.     Return $(Status) $(KeyHandle)
  1912.  
  1913. ;-----------------------------------------------------------------------
  1914. ; ROUTINE:      DeleteValue
  1915. ;
  1916. ; DESCRIPTION:  Deletes a value.
  1917. ;
  1918. ; INPUTS:       $0: Handle into registry
  1919. ;               $1: KeyTreeComponents {Key1Info, Key2Info..}
  1920. ;               $2: ValueList {Value1Info, Value2Info, Value3Info}
  1921. ;
  1922. ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
  1923. ;                            STATUS_FAILED
  1924. ;                            STATUS_ERROR_CREATEKEY
  1925. ;                            STATUS_ERROR_CREATEVALUE
  1926. ;
  1927. ;               $R1: Handle to created key
  1928. ;
  1929. ;------------------------------------------------------------------------
  1930.  
  1931. [DeleteValue]
  1932. ;    ifint $(!TestRegVerbose) == 1
  1933. ;       Debug-Output ".INF: CreateKey $0 = "$($0)
  1934. ;       Debug-Output ".INF: CreateKey $1 = "$($1)
  1935. ;       Debug-Output ".INF: CreateKey $2 = "$($2)
  1936. ;    endif
  1937.  
  1938.     ;
  1939.     ; Initialize
  1940.     ;
  1941.  
  1942.     set Status = STATUS_FAILED
  1943.     read-syms RegistryConstants
  1944.  
  1945.     ;
  1946.     ; traverse down the keytreecomponents and open/create components as
  1947.     ; you go along
  1948.     ;
  1949.  
  1950.     set BaseHandle = $($0)
  1951.     set KeyHandle  = $(BaseHandle)
  1952.  
  1953.     ForListDo $($1)
  1954.  
  1955.         set KeyInfo = $($)
  1956.         set KeyName = *($(KeyInfo), 1)
  1957.  
  1958.         ;
  1959.         ; Try opening the key first
  1960.         OpenRegKey $(BaseHandle) "" $(KeyName) $(MaskAllAccess) KeyHandle
  1961.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1962.             ;
  1963.             ; Key doesn't exist
  1964.             ;
  1965.             ; Debug-Output "REGISTRY.INF: Key"$(KeyName)"doesn't exist.  Will create key"
  1966.  
  1967.             goto enddelete
  1968.         endif
  1969.  
  1970.         ifstr(i) $(BaseHandle) != $($0)
  1971.             CloseRegKey $(BaseHandle)
  1972.             ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1973.                 set Status = STATUS_ERROR_CREATEKEY
  1974.                 ;  Debug-Output "REGISTRY.INF: Error in closing base handle"
  1975.                 goto endcreate
  1976.             endif
  1977.         endif
  1978.  
  1979.         set BaseHandle = $(KeyHandle)
  1980.  
  1981.     EndForListDo
  1982.  
  1983.     DeleteRegValue $(KeyHandle) $($2)
  1984.     set Status = STATUS_SUCCESSFUL
  1985.  
  1986. enddelete = +
  1987.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1988.         ; Debug-Output "REGISTRY.INF: CreateKey Error:"$(Status)
  1989.     endif
  1990.     Return $(Status) $(KeyHandle)
  1991.  
  1992.  
  1993. ;*************************************************************************
  1994. ;
  1995. ;     SECTION:   AddValueList
  1996. ;
  1997. ;     PURPOSE:   Given a nested list of value items, add each to the given
  1998. ;                key.   Key is left open.
  1999. ;
  2000. ;   ARGUMENTS:   $0    Registry key handle
  2001. ;                $1    List of value items; for example:
  2002. ;                          { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
  2003. ;                            {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
  2004. ;
  2005. ;     RETURNS:   $R0   Status
  2006. ;
  2007. ;
  2008. ;*************************************************************************
  2009.  
  2010. [AddValueList]
  2011.    set Status = STATUS_FAILED
  2012.    read-syms RegistryConstants
  2013.  
  2014.    ForListDo $($1)
  2015.        SetRegValue $($0) $($)
  2016.        ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  2017.            ; Debug-Output "REGISTRY.INF: CreateValue failed:"$($)
  2018.            goto end_addvaluelist
  2019.        endif
  2020.    EndForListDo
  2021.    set Status = STATUS_SUCCESSFUL
  2022.  
  2023. end_addvaluelist = +
  2024.    return $(Status)
  2025.  
  2026. ;-----------------------------------------------------------------------
  2027. ; ROUTINE:      QueryUserQuit
  2028. ;
  2029. ; DESCRIPTION:  This routine queries whether the user wants to quit setup
  2030. ;
  2031. ; INPUTS:       None
  2032. ;
  2033. ; OUTPUTS:      $R0: Status:     STATUS_SUCCESSFUL |
  2034. ;                                STATUS_FAILED
  2035. ;
  2036. ;               $R1: UserAction: OK | CANCEL
  2037. ;
  2038. ;------------------------------------------------------------------------
  2039. [QueryUserQuit]
  2040.  
  2041.     set Status     = STATUS_FAILED
  2042.     set UserAction = CANCEL
  2043.  
  2044.     ;
  2045.     ; read in quit message
  2046.     ;
  2047.     read-syms ExitWarningDlg$(!STF_LANGUAGE)
  2048.     ui start "ExitWarning"
  2049.     ifstr(i) $(DLGEVENT) == "YES"
  2050.         set Status     = STATUS_SUCCESSFUL
  2051.         set UserAction = "OK"
  2052.  
  2053.     else-ifstr(i) $(DLGEVENT) == "NO"
  2054.         set Status     = STATUS_SUCCESSFUL
  2055.         set UserAction = "CANCEL"
  2056.     else
  2057.     endif
  2058.  
  2059. fin_QueryUserQuit = +
  2060.     Return $(Status) $(UserAction)
  2061.  
  2062. [ExitWarningDlgENG]
  2063.     DlgType      = "MessageBox"
  2064.     STF_MB_TITLE = "Exit Microsoft Index Server for Microsoft Windows NT Setup"
  2065.     STF_MB_TEXT  = "The Microsoft Index Server is not completely installed."$(LF)$(LF)+
  2066.                    "  Are you sure you want to exit Setup?"
  2067.     STF_MB_TYPE  = 3
  2068.     STF_MB_ICON  = 5
  2069.     STF_MB_DEF   = 1
  2070.  
  2071.  
  2072. ;-----------------------------------------------------------------------
  2073. ; ROUTINE:      SetupMessage
  2074. ;
  2075. ; DESCRIPTION:  Puts up a MessageBox
  2076. ;
  2077. ; INPUTS:       $0   LanguageID
  2078. ;               $1   Message type
  2079. ;               $2   Message string
  2080. ;
  2081. ; OUTPUTS:      $R0: Status:     STATUS_SUCCESSFUL |
  2082. ;                                STATUS_FAILED
  2083. ;
  2084. ;               $R1: UserAction: OK | CANCEL
  2085. ;
  2086. ;------------------------------------------------------------------------
  2087. [SetupMessage]
  2088.     set Status     = STATUS_FAILED
  2089.     set UserAction = "CANCEL"
  2090.     set DlgText = $($2)
  2091.     ifstr(i) $($1) == "WARNING"
  2092.         read-syms WarningDlg$($0)
  2093.     else-ifstr(i) $($1) == "FATAL"
  2094.         read-syms FatalDlg$($0)
  2095.     else-ifstr(i) $($1) == "NONFATAL"
  2096.         read-syms NonfatalDlg$($0)
  2097.     else-ifstr(i) $($1) == "STATUS"
  2098.         read-syms StatusDlg$($0)
  2099.     else-ifstr(i) $($1) == "WARNINGOK"
  2100.         read-syms WarningOKDlg$($0)
  2101.     else
  2102.         goto finish_SetupMessage
  2103.     endif
  2104.     ui start "SetupMessage"
  2105.     ifstr(i) $(DLGEVENT) == "OK"
  2106.         set Status     = STATUS_SUCCESSFUL
  2107.         set UserAction = $(DLGEVENT)
  2108.     else-ifstr(i) $(DLGEVENT) == "CANCEL"
  2109.         set Status     = STATUS_SUCCESSFUL
  2110.         set UserAction = $(DLGEVENT)
  2111.     else-ifstr(i) $(DLGEVENT) == "YES"
  2112.         set Status     = STATUS_SUCCESSFUL
  2113.         set UserAction = $(DLGEVENT)
  2114.     else-ifstr(i) $(DLGEVENT) == "NO"
  2115.         set Status     = STATUS_SUCCESSFUL
  2116.         set UserAction = $(DLGEVENT)
  2117.     else
  2118.     endif
  2119. finish_SetupMessage = +
  2120.     Return $(Status) $(UserAction)
  2121.     end
  2122.  
  2123. [WarningDlgENG]
  2124.     STF_MB_TITLE = "Setup Message"
  2125.     DlgType      = "MessageBox"
  2126.     STF_MB_TEXT  = $(DlgText)
  2127.     STF_MB_TYPE  = 2
  2128.     STF_MB_ICON  = 5
  2129.     STF_MB_DEF   = 2
  2130. [FatalDlgENG]
  2131.     STF_MB_TITLE = "Setup Message"
  2132.     DlgType      = "MessageBox"
  2133.     STF_MB_TEXT  = $(DlgText)
  2134.     STF_MB_TYPE  = 1
  2135.     STF_MB_ICON  = 3
  2136.     STF_MB_DEF   = 1
  2137. [NonfatalDlgENG]
  2138.     STF_MB_TITLE = "Setup Message"
  2139.     DlgType      = "MessageBox"
  2140.     STF_MB_TEXT  = $(DlgText)
  2141.     STF_MB_TYPE  = 1
  2142.     STF_MB_ICON  = 5
  2143.     STF_MB_DEF   = 1
  2144. [StatusDlgENG]
  2145.     STF_MB_TITLE = "Setup Message"
  2146.     DlgType      = "MessageBox"
  2147.     STF_MB_TEXT  = $(DlgText)
  2148.     STF_MB_TYPE  = 1
  2149.     STF_MB_ICON  = 2
  2150.     STF_MB_DEF   = 1
  2151. [WarningOKDlgENG]
  2152.     DlgType      = "MessageBox"
  2153.     STF_MB_TITLE = "Setup Message"
  2154.     STF_MB_TEXT  = $(DlgText)
  2155.     STF_MB_TYPE  = 3
  2156.     STF_MB_ICON  = 5
  2157.     STF_MB_DEF   = 1
  2158.  
  2159.  
  2160.  
  2161. ;-----------------------------------------------------------------------
  2162. ; ROUTINE:      DoAskPathEx
  2163. ;
  2164. ; DESCRIPTION:  Puts up an EDIT box to prompt for a path
  2165. ;
  2166. ; INPUTS:       $0   LanguageID
  2167. ;               $1   Message type
  2168. ;               $2   Message error
  2169. ;
  2170. ; OUTPUTS:      $R0: Status:     STATUS_SUCCESSFUL |
  2171. ;                                STATUS_FAILED
  2172. ;
  2173. ;               $R1: UserAction: OK | CANCEL
  2174. ;
  2175. ;------------------------------------------------------------------------
  2176. [DoAskPathEx]
  2177.     set Status      = STATUS_FAILED
  2178.     set Src         = $($0)
  2179. askpath = +
  2180.     read-syms DisketteDlg$(!STF_LANGUAGE)
  2181.     ui start "Diskette"
  2182.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  2183.         LibraryProcedure IsFullPath, $(!LIBHANDLE), CheckPathFullPathSpec $(EditTextOut)
  2184.         ifstr(i) $(IsFullPath) == "NO"
  2185.             StartWait
  2186.             LibraryProcedure STATUS, $(!LIBHANDLE), ProcessForUNC $(EditTextOut)
  2187.             EndWait
  2188.             ifstr(i) $(STATUS) == "ERROR"
  2189.                 shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $($2)
  2190.                 goto askpath
  2191.             else-ifstr(i) $(STATUS) == "NOT-UNC"
  2192.                 shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $($2)
  2193.                 goto askpath
  2194.             else-ifstr(i) $(STATUS) == "UNC-FAILCONNECT"
  2195.                 shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $($2)
  2196.                 goto askpath
  2197.             else
  2198.                 set Src = $(STATUS)
  2199.             endif
  2200.         else
  2201.             set Src = $(EditTextOut)
  2202.         endif
  2203.         ui pop 1
  2204.         LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(Src)
  2205.         ifstr(i) $(STATUS) == "ERROR"
  2206.             goto finish_DoAskPath
  2207.         else
  2208.             set Src = $(STATUS)
  2209.             set Status = STATUS_SUCCESSFUL
  2210.             goto finish_DoAskPath
  2211.         endif
  2212.     else-ifstr(i) $(DLGEVENT) == "BACK"
  2213.         ui pop 1
  2214.         set Status = STATUS_USERCANCEL
  2215.         goto finish_DoAskPath
  2216.     else
  2217.         ui pop 1
  2218.         goto finish_DoAskPath
  2219.     endif
  2220. finish_DoAskPath = +
  2221.     Return $(Status) $(Src) $(EditTextOut)
  2222.  
  2223. ;-----------------------------------------------------------------------
  2224. ; ROUTINE:      DoAskVPathEx
  2225. ;
  2226. ; DESCRIPTION:  Puts up an EDIT box to prompt for a virtual path
  2227. ;
  2228. ; INPUTS:       $0   LanguageID
  2229. ;               $1   Message type
  2230. ;               $2   Message error
  2231. ;
  2232. ; OUTPUTS:      $R0: Status:     STATUS_SUCCESSFUL |
  2233. ;                                STATUS_FAILED
  2234. ;
  2235. ;               $R1: UserAction: OK | CANCEL
  2236. ;
  2237. ;------------------------------------------------------------------------
  2238.  
  2239. [DoAskVPathEx]
  2240.     set Status      = STATUS_FAILED
  2241.     set Src         = $($0)
  2242. askvpath = +
  2243.     read-syms DisketteDlg$(!STF_LANGUAGE)
  2244.     ui start "Diskette"
  2245.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  2246.         ;
  2247.         ; Make sure it has slashes
  2248.         ;
  2249.  
  2250.         split-string $(EditTextOut) "/" Tmp
  2251.         set HasSlash = STATUS_FAILED
  2252.         set EndsInSlash = STATUS_FAILED
  2253.         set MinusEndSlash = ""
  2254.  
  2255.         ForListDo $(Tmp)
  2256.             ifstr(i) $($) == "/"
  2257.                 set HasSlash = STATUS_SUCCESS
  2258.                 set EndsInSlash = STATUS_SUCCESS
  2259.             else
  2260.                 set EndsInSlash = STATUS_FAILED
  2261.                 set MinusEndSlash = $(MinusEndSlash)/$($)
  2262.             endif
  2263.         EndForListDo
  2264.  
  2265.         ifstr(i) $(EndsInSlash) == STATUS_SUCCESS
  2266.             set EditTextOut = $(MinusEndSlash)
  2267.         endif
  2268.  
  2269.         ifstr(i) $(HasSlash) != STATUS_SUCCESS
  2270.             shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $($2)
  2271.             goto askvpath
  2272.         else
  2273.             set Src = $(EditTextOut)
  2274.         endif
  2275.  
  2276.         set Status = STATUS_SUCCESS
  2277.         ui pop 1
  2278.     else-ifstr(i) $(DLGEVENT) == "BACK"
  2279.         ui pop 1
  2280.         set Status = STATUS_USERCANCEL
  2281.         goto finish_DoAskVPath
  2282.     else
  2283.         ui pop 1
  2284.         goto finish_DoAskVPath
  2285.     endif
  2286.  
  2287. finish_DoAskVPath = +
  2288.     Return $(Status) $(Src) $(EditTextOut)
  2289.  
  2290. [DisketteDlgENG]
  2291.     Caption        = "Microsoft Index Server for Microsoft Windows NT Setup"
  2292.     Continue       = "Continue"
  2293.     Cancel         = "Cancel"
  2294.     DlgType        = "Edit"
  2295.     DlgTemplate    = "DISKETTE"
  2296.     DlgText        = $($1)
  2297.     Edit1Label     = ""
  2298.     EditTextIn     = $(Src)
  2299.     EditFocus      = "ALL"
  2300.  
  2301.  
  2302. ;----------------------------------------------
  2303. ; Billboard Helper functions
  2304. ;----------------------------------------------
  2305. [PushBillboard]
  2306.     read-syms BillboardDlg$(!STF_LANGUAGE)
  2307.     ui start "Billboard"
  2308.     Return
  2309. [PopBillboard]
  2310.     ui pop 1
  2311.     Return
  2312. [BillboardDlgENG]
  2313.     DlgType     = Billboard
  2314.     DlgTemplate = $($0)
  2315.     TextFields  = {$($1)}
  2316.  
  2317. [ICopySearchFiles]
  2318.     AddSectionFilesToCopyList Files-System    $(SrcPlatDir)   $(!WinSysDir)
  2319.     AddSectionFilesToCopyList Files-URL       $(SrcPlatDir)   $(StartFolder)
  2320.     AddSectionFilesToCopyList Files-Filters   $(SrcPlatDir)   $(!WinSysDir)
  2321.  
  2322.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Lang\noise.dat
  2323.     ifstr(i) $(STATUS) == YES
  2324.         AddSectionFilesToCopyList Files-Lang      $(SrcDir)Lang   $(!WinSysDir)
  2325.     else
  2326.         AddSectionFilesToCopyList Files-Lang      $(SrcDir)   $(!WinSysDir)
  2327.     endif
  2328.  
  2329.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Sample\admin.htm
  2330.     ifstr(i) $(STATUS) == YES
  2331.         AddSectionFilesToCopyList Files-SampleHTM  $(SrcDir)Sample $(HomeDir)Samples\Search\
  2332.         AddSectionFilesToCopyList Files-SampleIDQ  $(SrcDir)Sample $(ScriptDir)Samples\Search\
  2333.         AddSectionFilesToCopyList Files-AdminHTM   $(SrcDir)Sample $(HomeDir)srchadm\
  2334.         AddSectionFilesToCopyList Files-AdminIDQ   $(SrcDir)Sample $(ScriptDir)srchadm\
  2335.         AddSectionFilesToCopyList Files-SampleHelp $(SrcDir)Help   $(HomeDir)Samples\Search\
  2336.         AddSectionFilesToCopyList Files-Help       $(SrcDir)Help   $(HomeDir)srchadm\help
  2337.     else
  2338.         AddSectionFilesToCopyList Files-SampleHTM  $(SrcDir) $(HomeDir)Samples\Search\
  2339.         AddSectionFilesToCopyList Files-SampleIDQ  $(SrcDir) $(ScriptDir)Samples\Search\
  2340.         AddSectionFilesToCopyList Files-AdminHTM   $(SrcDir) $(HomeDir)srchadm\
  2341.         AddSectionFilesToCopyList Files-AdminIDQ   $(SrcDir) $(ScriptDir)srchadm\
  2342.         AddSectionFilesToCopyList Files-SampleHelp $(SrcDir) $(HomeDir)Samples\Search\
  2343.         AddSectionFilesToCopyList Files-Help       $(SrcDir) $(HomeDir)srchadm\help
  2344.     endif
  2345.  
  2346.  
  2347.     ;
  2348.     ; Add additional languages
  2349.     ;
  2350.  
  2351.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Lang\noise.DEU
  2352.     ifstr(i) $(STATUS) == YES
  2353.         AddSectionFilesToCopyList Files-Lang-DEU $(SrcDir)Lang $(!WinSysDir)
  2354.     else
  2355.         LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)noise.DEU
  2356.         ifstr(i) $(STATUS) == YES
  2357.             AddSectionFilesToCopyList Files-Lang-DEU $(SrcDir) $(!WinSysDir)
  2358.         endif
  2359.     endif
  2360.  
  2361.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Lang\noise.ENG
  2362.     ifstr(i) $(STATUS) == YES
  2363.         AddSectionFilesToCopyList Files-Lang-ENG $(SrcDir)Lang $(!WinSysDir)
  2364.     else
  2365.         LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)noise.ENG
  2366.         ifstr(i) $(STATUS) == YES
  2367.             AddSectionFilesToCopyList Files-Lang-ENG $(SrcDir) $(!WinSysDir)
  2368.         endif
  2369.     endif
  2370.  
  2371.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Lang\noise.ENU
  2372.     ifstr(i) $(STATUS) == YES
  2373.         AddSectionFilesToCopyList Files-Lang-ENU $(SrcDir)Lang $(!WinSysDir)
  2374.     else
  2375.         LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)noise.ENU
  2376.         ifstr(i) $(STATUS) == YES
  2377.             AddSectionFilesToCopyList Files-Lang-ENU $(SrcDir) $(!WinSysDir)
  2378.         endif
  2379.     endif
  2380.  
  2381.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Lang\noise.ESN
  2382.     ifstr(i) $(STATUS) == YES
  2383.         AddSectionFilesToCopyList Files-Lang-ESN $(SrcDir)Lang $(!WinSysDir)
  2384.     else
  2385.         LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)noise.ESN
  2386.         ifstr(i) $(STATUS) == YES
  2387.             AddSectionFilesToCopyList Files-Lang-ESN $(SrcDir) $(!WinSysDir)
  2388.         endif
  2389.     endif
  2390.  
  2391.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Lang\noise.FRA
  2392.     ifstr(i) $(STATUS) == YES
  2393.         AddSectionFilesToCopyList Files-Lang-FRA $(SrcDir)Lang $(!WinSysDir)
  2394.     else
  2395.         LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)noise.FRA
  2396.         ifstr(i) $(STATUS) == YES
  2397.             AddSectionFilesToCopyList Files-Lang-FRA $(SrcDir) $(!WinSysDir)
  2398.         endif
  2399.     endif
  2400.  
  2401.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Lang\noise.ITA
  2402.     ifstr(i) $(STATUS) == YES
  2403.         AddSectionFilesToCopyList Files-Lang-ITA $(SrcDir)Lang $(!WinSysDir)
  2404.     else
  2405.         LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)noise.ITA
  2406.         ifstr(i) $(STATUS) == YES
  2407.             AddSectionFilesToCopyList Files-Lang-ITA $(SrcDir) $(!WinSysDir)
  2408.         endif
  2409.     endif
  2410.  
  2411.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Lang\noise.NLD
  2412.     ifstr(i) $(STATUS) == YES
  2413.         AddSectionFilesToCopyList Files-Lang-NLD $(SrcDir)Lang $(!WinSysDir)
  2414.     else
  2415.         LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)noise.NLD
  2416.         ifstr(i) $(STATUS) == YES
  2417.             AddSectionFilesToCopyList Files-Lang-NLD $(SrcDir) $(!WinSysDir)
  2418.         endif
  2419.     endif
  2420.  
  2421.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)Lang\noise.SVE
  2422.     ifstr(i) $(STATUS) == YES
  2423.         AddSectionFilesToCopyList Files-Lang-SVE $(SrcDir)Lang $(!WinSysDir)
  2424.     else
  2425.         LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)noise.SVE
  2426.         ifstr(i) $(STATUS) == YES
  2427.             AddSectionFilesToCopyList Files-Lang-SVE $(SrcDir) $(!WinSysDir)
  2428.         endif
  2429.     endif
  2430.  
  2431.     exit
  2432.  
  2433. [Install-All-Files-Now]
  2434.     CopyFilesInCopyList
  2435.     exit
  2436.  
  2437. ;
  2438. ; Content Index file lists...
  2439. ;
  2440.  
  2441. [Files-System]
  2442. 1, CIDAEMON.EXE   NOLOG
  2443. 1, IDQ.DLL,       NOLOG
  2444. 1, INFOSOFT.DLL,  NOLOG
  2445. 1, QPERF.DLL,     NOLOG
  2446. 1, QUERY.DLL,     NOLOG
  2447.  
  2448. [Files-URL]
  2449. 1, ISADMIN.URL,   NOLOG, RENAME="Index Server Administration.url"
  2450. 1, ISDOC.URL,     NOLOG, RENAME="Index Server Online Documentation.url"
  2451. 1, ISQUERY.URL,   NOLOG, RENAME="Index Server Sample Query Form.url"
  2452. 1, ISREADME.URL,  NOLOG, RENAME="Index Server Release Notes.url"
  2453.  
  2454. [Files-Filters]
  2455. 1, HTMLFILT.DLL,  NOLOG
  2456. 1, KPPP.DLL,      NOLOG
  2457. 1, KPPP7.DLL,     NOLOG
  2458. 1, KPW6.DLL,      NOLOG
  2459. 1, KPWORD.DLL,    NOLOG
  2460. 1, KPXL5.DLL,     NOLOG
  2461. 1, SCCFA.DLL,     NOLOG
  2462. 1, SCCFI.DLL,     NOLOG
  2463. 1, SCCIFILT.DLL,  NOLOG
  2464. 1, SCCUT.DLL,     NOLOG
  2465.  
  2466. [Files-Lang]
  2467. 1, NOISE.DAT,     NOLOG, BACKUP=NOISE.DAT.BAK
  2468.  
  2469. [Files-Lang-DEU]
  2470. 1, NOISE.DEU,     NOLOG, BACKUP=NOISE.DEU.BAK
  2471. 1, WBCACHE.DEU,   NOLOG
  2472. 1, WBDBASE.DEU,   NOLOG
  2473.  
  2474. [Files-Lang-ENG]
  2475. 1, NOISE.ENG,     NOLOG, BACKUP=NOISE.ENG.BAK
  2476. 1, WBCACHE.ENG,   NOLOG
  2477. 1, WBDBASE.ENG,   NOLOG
  2478.  
  2479. [Files-Lang-ENU]
  2480. 1, NOISE.ENU,     NOLOG, BACKUP=NOISE.ENU.BAK
  2481. 1, WBCACHE.ENU,   NOLOG
  2482. 1, WBDBASE.ENU,   NOLOG
  2483.  
  2484. [Files-Lang-ESN]
  2485. 1, NOISE.ESN,     NOLOG, BACKUP=NOISE.ESN.BAK
  2486. 1, WBCACHE.ESN,   NOLOG
  2487. 1, WBDBASE.ESN,   NOLOG
  2488.  
  2489. [Files-Lang-FRA]
  2490. 1, NOISE.FRA,     NOLOG, BACKUP=NOISE.FRA.BAK
  2491. 1, WBCACHE.FRA,   NOLOG
  2492. 1, WBDBASE.FRA,   NOLOG
  2493.  
  2494. [Files-Lang-ITA]
  2495. 1, NOISE.ITA,     NOLOG, BACKUP=NOISE.ITA.BAK
  2496. 1, WBCACHE.ITA,   NOLOG
  2497. 1, WBDBASE.ITA,   NOLOG
  2498.  
  2499. [Files-Lang-NLD]
  2500. 1, NOISE.NLD,     NOLOG, BACKUP=NOISE.NLD.BAK
  2501. 1, WBCACHE.NLD,   NOLOG
  2502. 1, WBDBASE.NLD,   NOLOG
  2503.  
  2504. [Files-Lang-SVE]
  2505. 1, NOISE.SVE,     NOLOG, BACKUP=NOISE.SVE.BAK
  2506. 1, WBCACHE.SVE,   NOLOG
  2507. 1, WBDBASE.SVE,   NOLOG
  2508.  
  2509.  
  2510. [Files-SampleHTM]
  2511. 1, AUTHOR.HTM,    NOLOG
  2512. 1, BESTWITH.GIF,  NOLOG
  2513. 1, BOOK08.JPG,    NOLOG
  2514. 1, 64X_BOOK.JPG,  NOLOG
  2515. 1, 32X_BOOK.JPG,  NOLOG
  2516. 1, DISCLAIM.HTM,  NOLOG
  2517. 1, FILESIZE.HTM,  NOLOG
  2518. 1, FILETIME.HTM,  NOLOG
  2519. 1, POWRBYBO.GIF,  NOLOG
  2520. 1, QUERY.HTM,     NOLOG
  2521. 1, HOME.GIF,      NOLOG
  2522.  
  2523. [Files-SampleHelp]
  2524. 1, QRYLANG.HTM,   NOLOG
  2525. 1, TIPSHELP.HTM,  NOLOG
  2526. 1, UP.GIF,        NOLOG
  2527.  
  2528. [Files-SampleIDQ]
  2529. 1, AUTHOR.IDQ,    NOLOG
  2530. 1, DEFERROR.HTX,  NOLOG
  2531. 1, DETAIL1.HTX,   NOLOG
  2532. 1, DETAIL2.HTX,   NOLOG
  2533. 1, DETAIL3.HTX,   NOLOG
  2534. 1, DETAIL4.HTX,   NOLOG
  2535. 1, FILESIZE.IDQ,  NOLOG
  2536. 1, FILETIME.IDQ,  NOLOG
  2537. 1, FORMAT1.HTX,   NOLOG
  2538. 1, FORMAT2.HTX,   NOLOG
  2539. 1, FORMAT3.HTX,   NOLOG
  2540. 1, FORMAT4.HTX,   NOLOG
  2541. 1, HEAD.HTX,      NOLOG
  2542. 1, HIDDEN.HTX,    NOLOG
  2543. 1, HTXERROR.HTX,  NOLOG
  2544. 1, IDQERROR.HTX,  NOLOG
  2545. 1, NEXT.HTX,      NOLOG
  2546. 1, PREV.HTX,      NOLOG
  2547. 1, QUERY.HTX,     NOLOG
  2548. 1, QUERY.IDQ,     NOLOG
  2549. 1, RESERROR.HTX,  NOLOG
  2550. 1, SFORMAT1.HTX,  NOLOG
  2551. 1, SFORMAT2.HTX,  NOLOG
  2552. 1, SFORMAT3.HTX,  NOLOG
  2553. 1, SFORMAT4.HTX,  NOLOG
  2554. 1, SHEAD.HTX,     NOLOG
  2555. 1, SIMPLE.IDQ,    NOLOG
  2556. 1, SNEXT.HTX,     NOLOG
  2557. 1, STAIL.HTX,     NOLOG
  2558. 1, TAIL.HTX,      NOLOG
  2559.  
  2560. [Files-AdminHTM]
  2561. 1, ADMIN.HTM,     NOLOG
  2562. 1, BESTWITH.GIF,  NOLOG
  2563. 1, BOOK08.JPG,    NOLOG
  2564. 1, HOME.GIF,      NOLOG
  2565. 1, POWRBYBO.GIF,  NOLOG
  2566. 1, README.HTM,    NOLOG
  2567.  
  2568. [Files-AdminIDQ]
  2569. 1, ADMIN.HTX,     NOLOG
  2570. 1, ADMIN.IDA,     NOLOG
  2571. 1, ADMIN.IDQ,     NOLOG
  2572. 1, MERGE.IDA,     NOLOG
  2573. 1, HQUERY.IDQ,    NOLOG
  2574. 1, HQUERY.HTX,    NOLOG
  2575. 1, SCAN.IDA,      NOLOG
  2576. 1, SCAN.IDQ,      NOLOG
  2577. 1, SCAN.HTX,      NOLOG
  2578. 1, STATE.HTX,     NOLOG
  2579. 1, STATE.IDA,     NOLOG
  2580. 1, UNFILT.IDQ,    NOLOG
  2581. 1, UNFILT.HTX,    NOLOG
  2582.  
  2583. [Files-Help]
  2584. 1, ACTIVE2.GIF,   NOLOG
  2585. 1, ACTIVE6.GIF,   NOLOG
  2586. 1, ACTIVE6a.GIF,  NOLOG
  2587. 1, ACTIVE7.GIF,   NOLOG
  2588. 1, ADMINHLP.HTM,  NOLOG
  2589. 1, BACKGRD.GIF,   NOLOG
  2590. 1, BULLET.GIF,    NOLOG
  2591. 1, CATHLP.HTM,    NOLOG
  2592. 1, DEFAULT.HTM,   NOLOG
  2593. 1, ERRHANDL.HTM,  NOLOG
  2594. 1, ERRORHLP.HTM,  NOLOG
  2595. 1, FAQ.HTM,       NOLOG
  2596. 1, FILTRHLP.HTM,  NOLOG
  2597. 1, FRONT.HTM,     NOLOG
  2598. 1, GLOSSARY.HTM,  NOLOG
  2599. 1, HTXHELP.HTM,   NOLOG
  2600. 1, IDQ-VARS.HTM,  NOLOG
  2601. 1, IDQHELP.HTM,   NOLOG
  2602. 1, IDX_LOGO.GIF,  NOLOG
  2603. 1, INDEXHLP.HTM,  NOLOG
  2604. 1, INSTALL.HTM,   NOLOG
  2605. 1, INTRO.HTM,     NOLOG
  2606. 1, LICENSE.HTM,   NOLOG
  2607. 1, NEXT.GIF,      NOLOG
  2608. 1, ONEPIX.GIF,    NOLOG
  2609. 1, POWERED.GIF,   NOLOG
  2610. 1, PREVIOUS.GIF,  NOLOG
  2611. 1, QRYLANG.HTM,   NOLOG
  2612. 1, QUERYHLP.HTM,  NOLOG
  2613. 1, REGHELP.HTM,   NOLOG
  2614. 1, SCANHLP.HTM,   NOLOG
  2615. 1, SECHELP.HTM,   NOLOG
  2616. 1, TIPSHELP.HTM,  NOLOG
  2617. 1, TOC.GIF,       NOLOG
  2618. 1, UP.GIF,        NOLOG
  2619. 1, UP_END.GIF,    NOLOG
  2620. 1, XAG_E19.GIF,   NOLOG
  2621.  
  2622. ;
  2623. ; Content Index Registry Settings
  2624. ;
  2625.  
  2626. ;
  2627. ; Format: Root, Key, Name, Type, Value
  2628. ;   Type 0 = REG_SZ
  2629. ;   Type 4 = REG_DWORD
  2630. ;   Type 5 = REG_EXPAND_SZ
  2631. ;
  2632.  
  2633. [CI.IIS]
  2634. HKLM,"system\currentcontrolset\services\w3svc\Parameters\Script Map",".idq",0,"idq.dll"
  2635. HKLM,"system\currentcontrolset\services\w3svc\Parameters\Script Map",".ida",0,"idq.dll"
  2636.  
  2637. [CI.ContentIndex]
  2638. HKLM,"system\currentcontrolset\control\ContentIndex","ChangeNotificationInterval",4,"0000000F"
  2639. HKLM,"system\currentcontrolset\control\ContentIndex","DaemonResponseTimeout",4,"00000005"
  2640. HKLM,"system\currentcontrolset\control\ContentIndex","FilterContents",4,"00000001"
  2641. HKLM,"system\currentcontrolset\control\ContentIndex","FilterDirectories",4,"00000000"
  2642. HKLM,"system\currentcontrolset\control\ContentIndex","FilterFilesWithUnknownExtensions",4,"00000001"
  2643. HKLM,"system\currentcontrolset\control\ContentIndex","FilterDelayInterval",4,"00000014"
  2644. HKLM,"system\currentcontrolset\control\ContentIndex","FilterMemory",4,"00000080"
  2645. HKLM,"system\currentcontrolset\control\ContentIndex","FilterRemainingThreshold",4,"00000020"
  2646. HKLM,"system\currentcontrolset\control\ContentIndex","FilterRetries",4,"00000004"
  2647. HKLM,"system\currentcontrolset\control\ContentIndex","FilterRetryInterval",4,"0000001E"
  2648.  
  2649. HKLM,"system\currentcontrolset\control\ContentIndex","ForcedNetPathScanInterval",4,"00000078"
  2650. HKLM,"system\currentcontrolset\control\ContentIndex","IsapiMaxEntriesInQueryCache",4,"0000000a"
  2651. HKLM,"system\currentcontrolset\control\ContentIndex","IsapiMaxRecordsPerGetRows",4,"0000000A"
  2652. HKLM,"system\currentcontrolset\control\ContentIndex","IsapiMaxRecordsInResultSet",4,"00001388"
  2653. HKLM,"system\currentcontrolset\control\ContentIndex","IsapiQueryCachePurgeInterval",4,"00000005"
  2654. HKLM,"system\currentcontrolset\control\ContentIndex","MasterMergeCheckpointInterval",4,"00000100"
  2655. HKLM,"system\currentcontrolset\control\ContentIndex","MasterMergeTime",4,"00000000"
  2656. HKLM,"system\currentcontrolset\control\ContentIndex","MaxDefaultFilter",4,"00000100"
  2657. HKLM,"system\currentcontrolset\control\ContentIndex","MaxFilesizeFiltered",4,"00000100"
  2658. HKLM,"system\currentcontrolset\control\ContentIndex","MaxFilesizeMultiplier",4,"00000008"
  2659. HKLM,"system\currentcontrolset\control\ContentIndex","MaxIdealIndexes",4,"00000005"
  2660. HKLM,"system\currentcontrolset\control\ContentIndex","MaxIndexes",4,"00000032"
  2661. HKLM,"system\currentcontrolset\control\ContentIndex","MaxMergeInterval",4,"0000000a"
  2662. HKLM,"system\currentcontrolset\control\ContentIndex","MaxPendingDocuments",4,"00000020"
  2663. HKLM,"system\currentcontrolset\control\ContentIndex","MaxQueueChunks",4,"00000014"
  2664. HKLM,"system\currentcontrolset\control\ContentIndex","MaxQueryExecutionTime",4,"00002710"
  2665. HKLM,"system\currentcontrolset\control\ContentIndex","MaxQueryTimeslice",4,"00000032"
  2666. HKLM,"system\currentcontrolset\control\ContentIndex","MaxShadowFreeForceMerge",4,"000001F4"
  2667. HKLM,"system\currentcontrolset\control\ContentIndex","MaxShadowIndexSize",4,"0000000f"
  2668. HKLM,"system\currentcontrolset\control\ContentIndex","MaxWordLists",4,"00000014"
  2669. HKLM,"system\currentcontrolset\control\ContentIndex","MaxWordlistSize",4,"00000014"
  2670. HKLM,"system\currentcontrolset\control\ContentIndex","MinDiskFreeForceMerge",4,"0000000f"
  2671. HKLM,"system\currentcontrolset\control\ContentIndex","MinMergeIdleTime",4,"0000005a"
  2672. HKLM,"system\currentcontrolset\control\ContentIndex","MinSizeMergeWordlists",4,"00000400"
  2673. HKLM,"system\currentcontrolset\control\ContentIndex","MinWordlistMemory",4,"00000005"
  2674. HKLM,"system\currentcontrolset\control\ContentIndex","ThreadClassFilter",4,"00000040"
  2675. HKLM,"system\currentcontrolset\control\ContentIndex","ThreadPriorityFilter",4,"00000001"
  2676. HKLM,"system\currentcontrolset\control\ContentIndex","ThreadPriorityMerge",4,"fffffffe"
  2677. HKLM,"system\currentcontrolset\control\ContentIndex","GenerateCharacterization",4,"00000001"
  2678. HKLM,"system\currentcontrolset\control\ContentIndex","MaxCharacterization",4,"00000140"
  2679. HKLM,"system\currentcontrolset\control\ContentIndex","GrovelIISRegistry",4,"00000001"
  2680. HKLM,"system\currentcontrolset\control\ContentIndex","EventLogFlags",4,"00000002"
  2681. HKLM,"system\currentcontrolset\control\ContentIndex","CiFlags",4,"00000000"
  2682. HKLM,"system\currentcontrolset\Services\EventLog\Application\Ci","EventMessageFile",5,"%SystemRoot%\System32\query.dll"
  2683. HKLM,"system\currentcontrolset\Services\EventLog\Application\Ci","CategoryMessageFile",5,"%SystemRoot%\System32\query.dll"
  2684. HKLM,"system\currentcontrolset\Services\EventLog\Application\Ci","TypesSupported",4,"7"
  2685. HKLM,"system\currentcontrolset\Services\EventLog\Application\Ci","CategoryCount",4,"1"
  2686.  
  2687. [CI.ContentIndexSmall]
  2688. HKLM,"system\currentcontrolset\control\ContentIndex","MinIdleQueryThreads",4,"00000001"
  2689. HKLM,"system\currentcontrolset\control\ContentIndex","MaxActiveQueryThreads",4,"00000003"
  2690. HKLM,"system\currentcontrolset\control\ContentIndex","MaxFreshCount",4,"00001388"
  2691. HKLM,"system\currentcontrolset\control\ContentIndex","PropertyStoreMappedCache",4,"00000010"
  2692. HKLM,"system\currentcontrolset\control\ContentIndex","IsapiRequestQueueSize",4,"00000010"
  2693. HKLM,"system\currentcontrolset\control\ContentIndex","CacheLockingGranularity",4,"0000001"
  2694.  
  2695. [CI.ContentIndexLarge]
  2696. HKLM,"system\currentcontrolset\control\ContentIndex","MinIdleQueryThreads",4,"00000002"
  2697. HKLM,"system\currentcontrolset\control\ContentIndex","MaxActiveQueryThreads",4,"00000003"
  2698. HKLM,"system\currentcontrolset\control\ContentIndex","MaxFreshCount",4,"00004E20"
  2699. HKLM,"system\currentcontrolset\control\ContentIndex","PropertyStoreMappedCache",4,"00000060"
  2700. HKLM,"system\currentcontrolset\control\ContentIndex","IsapiRequestQueueSize",4,"00000018"
  2701. HKLM,"system\currentcontrolset\control\ContentIndex","CacheLockingGranularity",4,"0000001"
  2702.  
  2703. [CI.ContentIndexSmallMP2]
  2704. HKLM,"system\currentcontrolset\control\ContentIndex","MinIdleQueryThreads",4,"00000002"
  2705. HKLM,"system\currentcontrolset\control\ContentIndex","MaxActiveQueryThreads",4,"00000006"
  2706. HKLM,"system\currentcontrolset\control\ContentIndex","MaxFreshCount",4,"00001388"
  2707. HKLM,"system\currentcontrolset\control\ContentIndex","PropertyStoreMappedCache",4,"00000020"
  2708. HKLM,"system\currentcontrolset\control\ContentIndex","IsapiRequestQueueSize",4,"00000018"
  2709. HKLM,"system\currentcontrolset\control\ContentIndex","CacheLockingGranularity",4,"0000002"
  2710.  
  2711. [CI.ContentIndexLargeMP2]
  2712. HKLM,"system\currentcontrolset\control\ContentIndex","MinIdleQueryThreads",4,"00000003"
  2713. HKLM,"system\currentcontrolset\control\ContentIndex","MaxActiveQueryThreads",4,"00000006"
  2714. HKLM,"system\currentcontrolset\control\ContentIndex","MaxFreshCount",4,"00004E20"
  2715. HKLM,"system\currentcontrolset\control\ContentIndex","PropertyStoreMappedCache",4,"00000060"
  2716. HKLM,"system\currentcontrolset\control\ContentIndex","IsapiRequestQueueSize",4,"00000018"
  2717. HKLM,"system\currentcontrolset\control\ContentIndex","CacheLockingGranularity",4,"0000002"
  2718.  
  2719. [CI.ContentIndexLargeMPMany]
  2720. HKLM,"system\currentcontrolset\control\ContentIndex","MinIdleQueryThreads",4,"00000004"
  2721. HKLM,"system\currentcontrolset\control\ContentIndex","MaxActiveQueryThreads",4,"00000009"
  2722. HKLM,"system\currentcontrolset\control\ContentIndex","MaxFreshCount",4,"00004E20"
  2723. HKLM,"system\currentcontrolset\control\ContentIndex","PropertyStoreMappedCache",4,"00000060"
  2724. HKLM,"system\currentcontrolset\control\ContentIndex","IsapiRequestQueueSize",4,"00000020"
  2725. HKLM,"system\currentcontrolset\control\ContentIndex","CacheLockingGranularity",4,"0000005"
  2726.  
  2727.  
  2728. [CI.Performance]
  2729. HKLM,"system\currentcontrolset\services\ContentFilter\Performance","Close",0,"DoneFILTERPerformanceData"
  2730. HKLM,"system\currentcontrolset\services\ContentFilter\Performance","Collect",0,"CollectFILTERPerformanceData"
  2731. HKLM,"system\currentcontrolset\services\ContentFilter\Performance","Open",0,"InitializeFILTERPerformanceData"
  2732. HKLM,"system\currentcontrolset\services\ContentFilter\Performance","Library",0,"QPerf.dll"
  2733. HKLM,"system\currentcontrolset\services\ContentFilter\Linkage","Bind",0,"\Dummy"
  2734. HKLM,"system\currentcontrolset\services\ContentFilter\Linkage","Export",0,"\Dummy"
  2735. HKLM,"system\currentcontrolset\services\ContentFilter\Linkage","Route",0,"\Dummy"
  2736. HKLM,"system\currentcontrolset\services\ContentIndex\Performance","Close",0,"DoneCIPerformanceData"
  2737. HKLM,"system\currentcontrolset\services\ContentIndex\Performance","Collect",0,"CollectCIPerformanceData"
  2738. HKLM,"system\currentcontrolset\services\ContentIndex\Performance","Open",0,"InitializeCIPerformanceData"
  2739. HKLM,"system\currentcontrolset\services\ContentIndex\Performance","Library",0,"QPerf.dll"
  2740. HKLM,"system\currentcontrolset\services\ContentIndex\Linkage","Bind",0,"\Dummy"
  2741. HKLM,"system\currentcontrolset\services\ContentIndex\Linkage","Export",0,"\Dummy"
  2742. HKLM,"system\currentcontrolset\services\ContentIndex\Linkage","Route",0,"\Dummy"
  2743. HKLM,"system\currentcontrolset\services\ISAPISearch\Performance","Close",0,"DoneCIISAPIPerformanceData"
  2744. HKLM,"system\currentcontrolset\services\ISAPISearch\Performance","Collect",0,"CollectCIISAPIPerformanceData"
  2745. HKLM,"system\currentcontrolset\services\ISAPISearch\Performance","Open",0,"InitializeCIISAPIPerformanceData"
  2746. HKLM,"system\currentcontrolset\services\ISAPISearch\Performance","Library",0,"QPerf.dll"
  2747. HKLM,"system\currentcontrolset\services\ISAPISearch\Linkage","Bind",0,"\Dummy"
  2748. HKLM,"system\currentcontrolset\services\ISAPISearch\Linkage","Export",0,"\Dummy"
  2749. HKLM,"system\currentcontrolset\services\ISAPISearch\Linkage","Route",0,"\Dummy"
  2750.  
  2751. ;
  2752. ; Format: Persistent Handler CLSID, Persistent Handler description, Inproc handler for IFilter
  2753. ;
  2754.  
  2755. [CI.PersHandlers]
  2756. "{5E941D80-BF96-11CD-B579-08002B30BFEB}","Plain Text Persistent Handler","{C1243CA0-BF96-11CD-B579-08002B30BFEB}"
  2757. "{EEC97550-47A9-11CF-B952-00AA0051FE20}","HTML File Persistent Handler","{E0CA5340-4534-11CF-B952-00AA0051FE20}"
  2758. "{098F2470-BAE0-11CD-B579-08002B30BFEB}","Null persistent handler","{C3278E90-BEA7-11CD-B579-08002B30BFEB}"
  2759. "{98de59a0-d175-11cd-a7bd-00006b827d94}","MS Office Persistent Handler","{53524bdc-3e9c-101b-abe2-00608c86f49a}"
  2760.  
  2761. [CI.HtmlFilter]
  2762. HKLM,"system\currentcontrolset\control\HtmlFilter","MetaTagClsid",2,"{d1b5d3f0-c0b3-11cf-9a92-00a0c908dbf1}"
  2763.  
  2764. ;
  2765. ; Format: Filter CLSID, Filter description, InprocServer32
  2766. ;
  2767.  
  2768. [CI.Filters]
  2769. "{C3278E90-BEA7-11CD-B579-08002B30BFEB}","Null filter","query.dll"
  2770. "{C1243CA0-BF96-11CD-B579-08002B30BFEB}","Plain Text Filter","query.dll"
  2771. "{E0CA5340-4534-11CF-B952-00AA0051FE20}","HTML Filter","htmlfilt.dll"
  2772. "{53524bdc-3e9c-101b-abe2-00608c86f49a}","Inso Universal IFilter","sccifilt.dll"
  2773.  
  2774. ;
  2775. ; Format: ShortName, CLSID, Class description, Persistent Handler, Extension(s)
  2776. ;
  2777.  
  2778. [CI.Classes]
  2779. "htmlfile","{25336920-03F9-11cf-8FD0-00AA00686F13}","HTML file","{EEC97550-47A9-11CF-B952-00AA0051FE20}",".htm,.html,.htx,.stm"
  2780. "idqfile","{961C1130-89AD-11CFf-88A1-00AA004B9986}","Microsoft Query parameter file","{5E941D80-BF96-11CD-B579-08002B30BFEB}",".idq"
  2781. "Word.Template","{00020900-0000-0000-C000-000000000046}","Microsoft Word Template","{98de59a0-d175-11cd-a7bd-00006b827d94}",".dot"
  2782. "Word.Document","{00020900-0000-0000-C000-000000000046}","Microsoft Word Document","{98de59a0-d175-11cd-a7bd-00006b827d94}",".doc"
  2783. "Word.RTF","{00020900-0000-0000-C000-000000000046}","Rich Text Format","{98de59a0-d175-11cd-a7bd-00006b827d94}",".rtf"
  2784. "Excel.Sheet","{00020810-0000-0000-C000-000000000046}","Microsoft Excel Worksheet","{98de59a0-d175-11cd-a7bd-00006b827d94}",".xla,.xlb,.xll,.xlm,.xls,.xlt,.xlw"
  2785. "Excel.Chart","{00020811-0000-0000-C000-000000000046}","Microsoft Excel Chart","{98de59a0-d175-11cd-a7bd-00006b827d94}",".xlc"
  2786. "PowerPoint.Template.7","{EA7BAE71-FB3B-11CD-A903-00AA00510EA3}","Microsoft PowerPoint Slide","{98de59a0-d175-11cd-a7bd-00006b827d94}",".pot"
  2787. "PowerPoint.Show.7","{EA7BAE70-FB3B-11CD-A903-00AA00510EA3}","Microsoft PowerPoint Presentation","{98de59a0-d175-11cd-a7bd-00006b827d94}",".ppt"
  2788. "PlainText","{89BCB7A4-6119-101A-BCB7-00DD010655AF}","Plain ASCII/UniCode text file","{5E941D80-BF96-11CD-B579-08002B30BFEB}",".txt,.wtx"
  2789. "batfile","{89BCB7A5-6119-101A-BCB7-00DD010655AF}","MS-DOS Batch File","{5E941D80-BF96-11CD-B579-08002B30BFEB}",".bat"
  2790. "cmdfile","{89BCB7A6-6119-101A-BCB7-00DD010655AF}","Windows NT Command Script","{5E941D80-BF96-11CD-B579-08002B30BFEB}",".cmd"
  2791. "BinaryFile","{08c524e0-89b0-11cf-88a1-00aa004b9986}","Binary file","{098F2470-BAE0-11CD-B579-08002B30BFEB}",".aif,.avi,.cgm,.com,.dct,.dic,.dll,.exe,.eyb,.fnt,.ghi,.gif,.hqx,.ico,.inv,.jbf,.jpg,.m14,.mov,.movie,.mv,.pdf,.pic,.pma,.pmc,.pml,.pmr,.psd,.sc2,.tar,.tif,.tiff,.ttf,.wav,.wll,.wlt,.wmf,.z,.z96,.zip"
  2792.  
  2793. ;
  2794. ; Format: Name, locale, Wordbreaker CLSID, Stemmer CLSID, noise file
  2795. ;
  2796.  
  2797. [CI.LangRes]
  2798. "English_US","1033","{59E09780-8099-101B-8DF3-00000B65C3B5}","{eeed4c20-7f1b-11ce-be57-00aa0051fe20}","noise.enu"
  2799. "English_UK","2057","{59E097e4-8099-101B-8DF3-00000B65C3B5}","{d99f7670-7f1a-11ce-be57-00aa0051fe20}","noise.eng"
  2800. "French_French","1036","{59E09848-8099-101B-8DF3-00000B65C3B5}","{2a6eb050-7f1c-11ce-be57-00aa0051fe20}","noise.fra"
  2801. "German_German","1031","{9B08E210-E51B-11CD-BC7F-00AA003DB18E}","{510a4910-7f1c-11ce-be57-00aa0051fe20}","noise.deu"
  2802. "Italian_Italian","1040","{fd86b5d0-12c6-11ce-bd31-00aa004bbb1f}","{6d36ce10-7f1c-11ce-be57-00aa0051fe20}","noise.ita"
  2803. "Swedish_Default","1053","{01c6b350-12c7-11ce-bd31-00aa004bbb1f}","{9478f640-7f1c-11ce-be57-00aa0051fe20}","noise.sve"
  2804. "Spanish_Modern","3082","{0285b5c0-12c7-11ce-bd31-00aa004bbb1f}","{b0516ff0-7f1c-11ce-be57-00aa0051fe20}","noise.esn"
  2805. "Dutch_Dutch","1043","{66b37110-8bf2-11ce-be59-00aa0051fe20}","{860d28d0-8bf4-11ce-be59-00aa0051fe20}","noise.nld"
  2806. "Neutral","0","{369647e0-17b0-11ce-9950-00aa004bbb1f}","","noise.dat"
  2807.  
  2808.  
  2809. ;
  2810. ; Format: Filter CLSID, Filter description, InprocServer32
  2811. ;
  2812.  
  2813. [CI.LangClass]
  2814. "{59E09780-8099-101B-8DF3-00000B65C3B5}","English_US Word Breaker Resources","infosoft.dll"
  2815. "{59E097e4-8099-101B-8DF3-00000B65C3B5}","English_UK Word Breaker Resources","infosoft.dll"
  2816. "{59E09848-8099-101B-8DF3-00000B65C3B5}","French_French Word Breaker Resources","infosoft.dll"
  2817. "{9B08E210-E51B-11CD-BC7F-00AA003DB18E}","German_German Word Breaker Resources","infosoft.dll"
  2818. "{fd86b5d0-12c6-11ce-bd31-00aa004bbb1f}","Italian_Italian Word Breaker Resources","infosoft.dll"
  2819. "{01c6b350-12c7-11ce-bd31-00aa004bbb1f}","Swedish_Default Word Breaker Resources","infosoft.dll"
  2820. "{0285b5c0-12c7-11ce-bd31-00aa004bbb1f}","Spanish_Modern Word Breaker Resources","infosoft.dll"
  2821. "{66b37110-8bf2-11ce-be59-00aa0051fe20}","Dutch_Dutch Word Breaker Resources","infosoft.dll"
  2822. "{369647e0-17b0-11ce-9950-00aa004bbb1f}","Neutral Word Breaker Resources","query.dll"
  2823. "{eeed4c20-7f1b-11ce-be57-00aa0051fe20}","English_US Stemmer Resources","infosoft.dll"
  2824. "{d99f7670-7f1a-11ce-be57-00aa0051fe20}","English_UK Stemmer Resources","infosoft.dll"
  2825. "{2a6eb050-7f1c-11ce-be57-00aa0051fe20}","French_French Stemmer Resources","infosoft.dll"
  2826. "{510a4910-7f1c-11ce-be57-00aa0051fe20}","German_German Stemmer Resources","infosoft.dll"
  2827. "{6d36ce10-7f1c-11ce-be57-00aa0051fe20}","Italian_Italian Stemmer Resources","infosoft.dll"
  2828. "{9478f640-7f1c-11ce-be57-00aa0051fe20}","Swedish_Default Stemmer Resources","infosoft.dll"
  2829. "{b0516ff0-7f1c-11ce-be57-00aa0051fe20}","Spanish_Modern Stemmer Resources","infosoft.dll"
  2830. "{860d28d0-8bf4-11ce-be59-00aa0051fe20}","Dutch_Dutch Stemmer Resources","infosoft.dll"
  2831.  
  2832. ;
  2833. ; Format Name, IDQ Error File, HTX Error File, Restriction Error File, DefaultErrorFile
  2834. ;
  2835.  
  2836. [CI.LangIDQ]
  2837. "English_US","/scripts/samples/search/IDQError.htx","/scripts/samples/search/HTXError.htx","/scripts/samples/search/ResError.htx","/scripts/samples/search/DefError.htx"
  2838. "English_UK","/scripts/samples/search/IDQError.htx","/scripts/samples/search/HTXError.htx","/scripts/samples/search/ResError.htx","/scripts/samples/search/DefError.htx"
  2839. "French_French","/scripts/samples/search/IDQError.htx","/scripts/samples/search/HTXError.htx","/scripts/samples/search/ResError.htx","/scripts/samples/search/DefError.htx"
  2840. "German_German","/scripts/samples/search/IDQError.htx","/scripts/samples/search/HTXError.htx","/scripts/samples/search/ResError.htx","/scripts/samples/search/DefError.htx"
  2841. "Italian_Italian","/scripts/samples/search/IDQError.htx","/scripts/samples/search/HTXError.htx","/scripts/samples/search/ResError.htx","/scripts/samples/search/DefError.htx"
  2842. "Swedish_Default","/scripts/samples/search/IDQError.htx","/scripts/samples/search/HTXError.htx","/scripts/samples/search/ResError.htx","/scripts/samples/search/DefError.htx"
  2843. "Spanish_Modern","/scripts/samples/search/IDQError.htx","/scripts/samples/search/HTXError.htx","/scripts/samples/search/ResError.htx","/scripts/samples/search/DefError.htx"
  2844. "Dutch_Dutch","/scripts/samples/search/IDQError.htx","/scripts/samples/search/HTXError.htx","/scripts/samples/search/ResError.htx","/scripts/samples/search/DefError.htx"
  2845. "Neutral","/scripts/samples/search/IDQError.htx","/scripts/samples/search/HTXError.htx","/scripts/samples/search/ResError.htx","/scripts/samples/search/DefError.htx"
  2846.